【问题标题】:Liferay Pagination not workingLiferay分页不工作
【发布时间】:2015-12-18 07:24:02
【问题描述】:

我已经创建了 MVC portlet。在 doView 方法中,我根据当前登录用户获取自定义列表(自定义)。

@Override
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse){
List<LeadPojo> leadpojoli = new ArrayList<LeadPojo>();
LeadList lead_list = new LeadList();
leadpojoli = lead_list.getRecords(themeDisplay.getUserId()+"");
renderRequest.setAttribute("all_lead", leadpojoli);
super.doView(renderRequest, renderResponse);
}

在 view.jsp 中,我使用 delta 5 创建了“liferay-ui:search-container”。当我点击“Next”或“Previous”时strong>”它会获取接下来的 5 条记录,并且在 view.jsp 中运行良好。

现在用户从“Actions”中选择“Edit”选项。现在获取当前记录 id 并调用 editRecord 方法[在这个方法中我再获取两个基于所选记录的列表(联系人和活动)] 从 MVC 类中加载,然后使用相应的列表、对象和变量加载到另一个“edit.jsp”中。

在“edit.jsp”中也有两个 liferay-ui:search-container,当我在“edit.jsp”中单击“liferay-ui:search-container”中的“下一个”或“上一个”按钮时。 jsp" 返回上一页,即执行doview方法。

如何获取 liferay-ui:search-container 表单“edit.jsp”中的下一组记录。两个 liferay-ui:search-container 显示列表的总数,但未获取下一组记录。

private void editRecord(ActionRequest request, ActionResponse response,String backURL) throws IOException {
     String recordId = ParamUtil.getString(request,'selectedId');
    List<LeadActivity> leadactivityli = new ArrayList<LeadActivity>();
    LeadProcess call = new LeadProcess();
    leadactivityli = call.getList(recordId);

    List<ContactPojo> allcon = new ArrayList<ContactPojo>();
    ContactList conli = new ContactList();
    allcon = conli.getContactList(recordId);
           request.setAttribute("allcontacts", allcon); 

            request.setAttribute("edit_leadactivity", leadactivityli);
            response.setRenderParameter("mvcPath","/html/Edit.jsp");

    }

edit.jsp

<%
LeadPojo leadobj = (LeadPojo) request.getAttribute("editlead");
List<LeadActivity> leadactli = (List<LeadActivity>)request.getAttribute("edit_leadactivity");       
List<ContactPojo> allcontacts = (List<ContactPojo>)request.getAttribute("allcontacts"); 
 int notesize =0;
    try{
        notesize = leadactli.size();
    }catch(Exception e){}

%>
<liferay-ui:search-container delta="10" emptyResultsMessage="No Progress Notes Were Found" rowChecker="<%= new RowChecker(renderResponse) %>" iteratorURL="<%= itURL %>">
    <liferay-ui:search-container-results results="<%= ListUtil.subList(leadactli,searchContainer.getStart(),searchContainer.getEnd()) %>" total="<%= notesize %>">  
    </liferay-ui:search-container-results>  
    <liferay-ui:search-container-row className="com.axxonet.LeadActivity" modelVar="leadview" >         
        <liferay-ui:search-container-row-parameter name="recordid" value="<%= leadview.getId()%>"></liferay-ui:search-container-row-parameter>  
        <liferay-ui:search-container-row-parameter name="lead_id" value="<%= leadview.getLead_id()%>"></liferay-ui:search-container-row-parameter>  
        <liferay-ui:search-container-column-text name="Subject"  value="<%= leadview.getSubject()%>">       
        </liferay-ui:search-container-column-text>      
        <liferay-ui:search-container-column-text name="Visit Note" value="<%= leadview.getCompany_Account()%>">     
        </liferay-ui:search-container-column-text>
      <liferay-ui:search-container-column-text name="Date" value="<%=leadview.getPersonalVisit() %>">   
      </liferay-ui:search-container-column-text>        
        <liferay-ui:search-container-column-text name="Created By" value="<%=leadview.getCreated_by()%>"/>              
        <liferay-ui:search-container-column-jsp align="right" path="/html/leadactivity.jsp" />      
    </liferay-ui:search-container-row>
    <liferay-ui:search-iterator  />
</liferay-ui:search-container>

【问题讨论】:

    标签: liferay liferay-6


    【解决方案1】:

    似乎您并没有告诉您的 portlet 类在单击 edit.jsp 中的 Next 按钮时必须重定向到哪里,因此默认情况下它重定向到 view.jsp 并执行 doView()。尝试使用custom iteratorURL 来实现这一点。

    此外,我想指出的是,即使结果是分页的(所以它只是一个“前端分页”),您显然是在管理整个列表:我希望列表不会增长太多。

    【讨论】:

      【解决方案2】:

      在您的&lt;portlet:renderURL&gt; 中设置一个参数redirect,并根据您要呈现的页面设置其值。

      现在在您的 portlet 类的 render 方法中获取 redirect 参数。

      然后将其与您在&lt;portlet:renderURL&gt; 中设置的值进行比较。如果返回true则在这里获取你的recordId,然后根据这个rec​​ordId获取两个并设置属性。

      然后返回像 '/html/edit.jsp' 这样的页面路径。如果您在 liferay 7 中使用 SPRING MVC 或 MVCRenderCommand,则使用 include 方法或返回字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 2014-01-16
        相关资源
        最近更新 更多