本文介绍了如何把分页放到非永久域名列表 - grails中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 你好,我有一个非永久域的实体列表,因为它具有两个实体的组合属性。我通常使用 def c = Case.createCriteria() def caseList = c.list([max: criteria.offset] 但这在我的列表中不起作用,因为获取的数据是不同的,我必须首先从表A中获取数据,然后将它与表B中的数据结合起来,然后循环每个数据以创建一个新的实体。下面的代码。 (标准案例笔记类型== 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 actionHope this helps ;) 这篇关于如何把分页放到非永久域名列表 - grails中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-30 05:26