如何把分页放到非永久域名列表 - grails中 [英] how to put pagination to a list of non persistent domain - grails

查看:89
本文介绍了如何把分页放到非永久域名列表 - grails中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,我有一个非永久域的实体列表,因为它具有两个实体的组合属性。我通常使用

  def c = Case.createCriteria()
def caseList = c.list([max: criteria.offset]

但这在我的列表中不起作用,因为获取的数据是不同的,我必须首先从表A中获取数据,然后将它与表B中的数据结合起来,然后循环每个数据以创建一个新的实体。下面的代码。



< (案例笔记n:案例笔记列表)
(标准案例笔记类型== 0)
{
案例笔记列表= searchClaimNotesByClaimNote(标准)
{
note = new ClaimNote()
note.dateAssigned = new SimpleDateFormat(yyyy-MM-dd)。format(n.cmCaseIdCmCase.assignedDate)//n.cmCaseIdCmCase.assignedDate
note.claimOwner = n.cmCaseIdCmCase.employeeIdEmployee.formatName()
note.caseNoteType =Claim Notes
note.caseNoteTitle = n.caseNoteTitle
note.noteOwner = n.employeeIdEmployee.formatName()
note.claimNo = n.cmCaseIdCmCase.id
note.clientName = n.cmCaseIdCmCase.clientIdClient.formatLastNameFirstNameMiddleInit()
note.caseNoteText = n.caseNoteText
note.id = n.id

claimNotesList.add(note)
}
cmcaseList = searchClaimNotesByCaseComments(criteria)
for(CmCase n:cmcaseList)
{
note = new ClaimNote()
note.dateAssigned = new SimpleDateFormat(yyyy-MM-dd).format(n.assignedDate)// n.assignedDate
note.claimOwner = n.employeeIdEmployee.formatName()
note.caseNoteType =个案评论
note.caseNoteTitle = n.caseTitle
note.noteOwner = n.employeeIdEmployee。 formatName()
note.claimNo = n.id
note.clientName = n.clientIdClient.formatLastNameFirstNameMiddleInit()
note.caseNoteText = n.caseComment
note.id = n.id
claimNotesList.add(note)

}





def cmCaseListFinal = null
def cmCaseCount = claimNotesList.size()
if(' caseNoteType'== criteria.sort){
cmCaseListFinal = claimNotesList.sort {a,b - >
if('asc'== criteria.order)a?.caseNoteType< => b?.caseNoteType
else b?.caseNoteType< => a'.caseNoteType
}
} else if('dateAssigned'== criteria.sort){
cmCaseListFinal = claimNotesList.sort {a,b - >
if('asc'== criteria.order)a?.dateAssigned< => b?.dateAssigned
else b?.clientIdClient?.dateAssigned< => a。.dateAssigned

} else {
cmCaseListFinal = claimNotesList
}

return cmCaseListFinal



}

这里是用条件搜索的代码。

  def searchClaimNotesByCaseComments(ClaimNoteSearchCriteria criteria)
{

log.info(条件)
def c = CmCase.createCriteria()

def cmCaseList = c.list([max:criteria.max,offset:criteria.offset])

$ b $ createAlias(clientIdClient,client)
createAlias(employeeIdEmployee,employee)
createAlias(internalOrgIdInternalOrg,I​​nternalOrg)$如果(criteria.clientSsnSearch!= null&& amp; criteria.clientSsnSearch.trim()!=''){
criteria.clientSsnSearch = criteria.clientSsnSearch.trim()

$ b b like('client.clientSsnSearch',criteria.clientSsnSearch)
}
// C#
if(criteria.clientVaFileNbrSearch!= null&&& criteria.clientVaFileNbrSearch.trim()!= ''){
criteria.clientVaFileNbrSearch = criteria.clien tVaFileNbrSearch.trim()

eq('client.clientVaFileNbrSearch',criteria.clientVaFileNbrSearch.toString())

}
//服务编号
如果(criteria.clientMilitaryServiceNbr!= null&& criteria.clientMilitaryServiceNbr.trim()!=''){
criteria.clientMilitaryServiceNbr = criteria.clientMilitaryServiceNbr.trim()

like('client.clientMilitaryServiceNbr',(criteria.clientMilitaryServiceNbr as String ).trim()+'%')

}
//姓氏
if(criteria.clientLastName!= null&& criteria.clientLastName!='' ){

like('client.clientLastName',(criteria.clientLastName as String).trim()+'%')

}
// FirstName
if(criteria.clientFirstName!= null&& criteria.clientFirstName!=''){

like('client.clientFirstName',(criteria.clientFirstName as String).trim ()+'%')

}
// employeeIdEmployee
if(criteria.employeeIdEmployee!= null){

eq('employee。 id',criteria.employeeIdE mployee)

}
// poaStatus
if(criteria.intOrgLegalName!= null&& criteria.intOrgLegalName!=''){

like('InternalOrg.intOrgLegalName',(criteria.intOrgLegalName as String).trim()+'%')

} (条件.CaseNoteText!= null&& criteria.caseNoteText!=''){

like('caseComment',(criteria.caseNoteText as String).trim() +'%')
}


}

返回cmCaseList

}
$ b $ p
$ b

这里是我的分页代码

 < div class =gadgetLong> 
< div> < span class =gadgetName>< g:message code =claimSearch.searchResult.labeldefault =Search Results/>< / span>< span class =gadgetNumber> $ { claimNoteList.size()}< / span>< / div>
< span class =gadgetNumber> $ {claimNoteList.size()}< / span>
< span class =gadgetNumber> < g:paginate next =Nextprev =Back
maxsteps =0action =sortclaimSearch
total =$ {claimNoteList.size()}/>< /跨度>
< / div>
< div>

我想在不使用创建条件的情况下将分页添加到最终列表中,因为它已经过了搜索。有没有在这方面的工作?或者我在做什么?谢谢

解决方案

也许您可以使用一种方法来获取子列表并在列表中查看列表和列表。 ()作为总数...也许这样的一个服务(不管你想要什么):

  def getSubList(List objectList ,Map params){
//验证参数
尝试{
params.max = params.max.toInteger()
params.offset = params.offset.toInteger()
} catch(Exception exceptionInstance){
params.max = 10
params.offset = 0
}
//验证分页参数...如果您不添加它们
if(params.max< = 0){
params.max = 10
}
//获取列表的总大小
def objectInstanceTotal = objectList。 size()
//验证偏移量。
if(params.offset< 0 || params.offset> objectInstanceTotal){
params.offset = 0
}
//验证分页边框(不要超出阵列边界)。
整数bordeInteger = params.max + params.offset
if(bordeInteger> objectInstanceTotal){
bordeInteger = objectInstanceTotal
}

//提取基于分页的子列表。
def objectSubList = objectList.subList(params.offset,bordeInteger)

return objectSubList
}

而在控制器中:

  def list = {

def list = //定义你的列表
$ b $ def subList = service.getSubList(list,params)
$ b $ [list:subList,listInstanceTotal:list.size()]





$ p在视图中,你总是调用de list action



希望这有助于;)


Hi I have a list of an entity which is non persistent domain because it has a combined properties of two entities. I usually use the

def c = Case.createCriteria()       
def caseList = c.list(  [max: criteria.max, offset: criteria.offset] 

but this does not work in my list because the getting of data is diff. I had to get data from table A first then combine it with data from Table B. then I loop each to create a new Entity. look code below.

if(criteria.caseNoteType==0)
        {
            caseNoteList = searchClaimNotesByClaimNote(criteria)
            for (CaseNote n: caseNoteList)
            {
                note = new ClaimNote()
                note.dateAssigned = new SimpleDateFormat("yyyy-MM-dd").format(n.cmCaseIdCmCase.assignedDate) //n.cmCaseIdCmCase.assignedDate
                note.claimOwner = n.cmCaseIdCmCase.employeeIdEmployee.formatName()
                note.caseNoteType = "Claim Notes"
                note.caseNoteTitle = n.caseNoteTitle
                note.noteOwner = n.employeeIdEmployee.formatName()
                note.claimNo = n.cmCaseIdCmCase.id
                note.clientName= n.cmCaseIdCmCase.clientIdClient.formatLastNameFirstNameMiddleInit()
                note.caseNoteText = n.caseNoteText
                note.id = n.id

                claimNotesList.add(note)
            }
            cmcaseList = searchClaimNotesByCaseComments(criteria)
            for (CmCase n: cmcaseList)
            {
                note = new ClaimNote()
                note.dateAssigned = new SimpleDateFormat("yyyy-MM-dd").format(n.assignedDate) // n.assignedDate
                note.claimOwner = n.employeeIdEmployee.formatName()
                note.caseNoteType = "Case Comments"
                note.caseNoteTitle = n.caseTitle
                note.noteOwner = n.employeeIdEmployee.formatName()
                note.claimNo = n.id
                note.clientName= n.clientIdClient.formatLastNameFirstNameMiddleInit()
                note.caseNoteText = n.caseComment
                note.id = n.id
                claimNotesList.add(note)

            }



        }

        def cmCaseListFinal = null
        def cmCaseCount = claimNotesList.size()
        if ('caseNoteType' == criteria.sort  ) {
            cmCaseListFinal = claimNotesList.sort { a, b ->
                if ( 'asc' == criteria.order )  a?.caseNoteType <=> b?.caseNoteType
                else   b?.caseNoteType <=> a?.caseNoteType
            }
        } else if ('dateAssigned' == criteria.sort  ) {
            cmCaseListFinal = claimNotesList.sort { a, b ->
                if ( 'asc' == criteria.order )  a?.dateAssigned <=> b?.dateAssigned
                else   b?.clientIdClient?.dateAssigned <=> a?.dateAssigned
            }
        } else {
            cmCaseListFinal = claimNotesList
        }

        return  cmCaseListFinal



    }

here is the code for searching with criteria. thesame goes with other entity being combined.

def searchClaimNotesByCaseComments(ClaimNoteSearchCriteria criteria)
{

    log.info ( criteria )
    def c =  CmCase.createCriteria()

    def cmCaseList = c.list([max: criteria.max, offset: criteria.offset] )
    {

        createAlias("clientIdClient", "client")
        createAlias("employeeIdEmployee", "employee")
        createAlias("internalOrgIdInternalOrg", "InternalOrg")

        if ( criteria.clientSsnSearch  != null && criteria.clientSsnSearch.trim() != '' ) {
            criteria.clientSsnSearch = criteria.clientSsnSearch.trim()
            like('client.clientSsnSearch', criteria.clientSsnSearch)
        }
        //C#
        if (  criteria.clientVaFileNbrSearch  != null && criteria.clientVaFileNbrSearch.trim() != '' ) {
            criteria.clientVaFileNbrSearch = criteria.clientVaFileNbrSearch.trim()

            eq ( 'client.clientVaFileNbrSearch',  criteria.clientVaFileNbrSearch.toString()   )

        }
        // Service Number
        if (  criteria.clientMilitaryServiceNbr   != null && criteria.clientMilitaryServiceNbr.trim() != '' ) {
            criteria.clientMilitaryServiceNbr = criteria.clientMilitaryServiceNbr.trim()

            like ( 'client.clientMilitaryServiceNbr', ( criteria.clientMilitaryServiceNbr  as String).trim() + '%'  )

        }
        // Last Name
        if ( criteria.clientLastName != null && criteria.clientLastName != '' ) {

            like ( 'client.clientLastName', (criteria.clientLastName as String).trim() + '%'  )

        }
        // FirstName
        if (  criteria.clientFirstName  != null && criteria.clientFirstName  != ''  ) {

            like ( 'client.clientFirstName',   (criteria.clientFirstName  as String).trim() + '%'  )

        }
        // employeeIdEmployee
        if ( criteria.employeeIdEmployee != null ) {

            eq ( 'employee.id', criteria.employeeIdEmployee )

        }
        //poaStatus
        if ( criteria.intOrgLegalName != null && criteria.intOrgLegalName != '' ) {

            like ( 'InternalOrg.intOrgLegalName',  (criteria.intOrgLegalName  as String).trim() + '%'  )

        }
        if ( criteria.caseNoteText != null  && criteria.caseNoteText != '' ) {

            like( 'caseComment',  (criteria.caseNoteText  as String).trim() + '%'  )
        }


    }

    return cmCaseList

}

here is my code for the paging

<div class="gadgetLong">
  <div> <span class="gadgetName"><g:message code="claimSearch.searchResult.label" default="Search Results" /></span><span class="gadgetNumber">${ claimNoteList.size() }</span></div>
   <span class="gadgetNumber">${ claimNoteList.size() }</span>
  <span class="gadgetNumber"> <g:paginate next="Next" prev="Back"
        maxsteps="0" action="sortclaimSearch" 
          total="${ claimNoteList.size() }" /></span>
  </div>
  <div>

I want to add pagination to the final List without using create criteria because it is already past the search. is there a work around on this? or what am I doing wong? thanks

解决方案

Maybe you can use a method to get a sublist and render in view the sublist as the list and the list.size() as the total... maybe something like this in a service (whatever you want):

def getSubList(List objectList, Map params) {
    //verify params
    try {
        params.max = params.max.toInteger()
        params.offset = params.offset.toInteger()
    } catch (Exception exceptionInstance) {
        params.max = 10
        params.offset = 0
    }
    //Verify pagination params... if not you add them
    if (params.max <= 0) {
        params.max = 10
    }
    //Get total size of the list
    def objectInstanceTotal = objectList.size()
    //verify offset.
    if (params.offset < 0 || params.offset > objectInstanceTotal) {
        params.offset = 0
    }
    //Verify the pagination border (don't excess from array border).
    Integer bordeInteger = params.max + params.offset
    if (bordeInteger > objectInstanceTotal) {
        bordeInteger = objectInstanceTotal
    }

    //Extract the sublist based on the pagination.
    def objectSubList = objectList.subList(params.offset, bordeInteger)

    return objectSubList
}

And in the controller:

def list = {

   def list = //Define your list

   def subList = service.getSubList(list, params)

   [list: subList, listInstanceTotal: list.size()]
}

In the view, you paginate as always calling de list action

Hope this helps ;)

这篇关于如何把分页放到非永久域名列表 - grails中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆