PortletJSP:如何基于值数组创建一系列ActionURL

PortletJSP:如何基于值数组创建一系列ActionURL,jsp,liferay,portlet,Jsp,Liferay,Portlet,在PortletJSP中,我需要生成一系列AcctionURL,这些AcctionURL覆盖在一个值数组上 以下代码中的所有内容都很好,我使用这些代码对RenderURL系列进行了生成: <% PortletURL manageReportURL = renderResponse.createRenderURL(); manageReportURL.setParameter("jspPage", "/html/ManageDossie

在PortletJSP中,我需要生成一系列AcctionURL,这些AcctionURL覆盖在一个值数组上

以下代码中的所有内容都很好,我使用这些代码对RenderURL系列进行了生成:

<%
            PortletURL manageReportURL = renderResponse.createRenderURL();
                manageReportURL.setParameter("jspPage", "/html/ManageDossier/manageReport.jsp");
                manageReportURL.setParameter("dossierEntryIds", primKey);
                manageReportURL.setParameter("redirect", rowURL);
            for (int w = 0; w < csApps.size(); w++) {
                manageReportURL.setParameter("csAppReportId", String.valueOf(csApps.get(w).getCompanyStudioAppId()));
        %>
                <liferay-ui:icon image="category" message="<%= csApps.get(w).getDescription() %>" url="<%= manageReportURL.toString() %>" />
        <%
            }
        %>

我使用了与ResourceURL相同的代码,一切正常:

<%
        ResourceURL serveResourceURL = renderResponse.createResourceURL();
            serveResourceURL.setParameter("dossierId", primKey);
        for (int n = 0; n < csAppsNoParms.size(); n++) {
            serveResourceURL.setParameter("csAppReportId", String.valueOf(csAppsNoParms.get(n).getCompanyStudioAppId()));
    %>
            <liferay-ui:icon image="print" message="<%= LanguageUtil.get(themeDisplay.getLocale(), \"print\") + StringPool.SPACE + csAppsNoParms.get(n).getDescription() %>" url="<%= serveResourceURL.toString() %>" />
    <%
        }
    %>

但是,当我对ActionURL执行相同的操作时,我没有收到任何错误,但我的操作代码从未执行过——只是什么也没做:

<%
        PortletURL notifyDossierToDittaURL = renderResponse.createActionURL();
            notifyDossierToDittaURL.setParameter("resourcePrimKey", primKey);
            notifyDossierToDittaURL.setParameter("redirect", rowURL);
        for (int n = 0; n < msgContentToDittaCodes.length; n++) {
            notifyDossierToDittaURL.setParameter("msgContentCod", msgContentToDittaCodes[n]);
    %>      
            <liferay-ui:icon image="news" message="<%= LanguageUtil.get(themeDisplay.getLocale(), \"send\") + StringPool.SPACE + msgContentToDittaCodes[n] %>" url="<%= notifyDossierToDittaURL.toString() %>" />
    <%
        }
    %>

请,任何人都可以看到上面的createRenderURL()和createActionURL()之间的区别

或者根据一组值来生成一系列ActionURL

提前谢谢大家,,
Ivano C.

当您使用Liferay的MVCPortlet时,我假设您的portlet代码中有不同的“操作”方法——当然每个方法都有不同的名称。您的代码似乎没有让MVCPortlet知道要调用哪个操作方法。您需要在代码中添加以下行:

String actionName = "yourMvcPortletActionMethodName";
notifyDossierToDittaURL.setParameter(ActionRequest.ACTION_NAME, actionName);
有一种更好的方法可以在portlet JSP中创建ActionURL:


与JSP中的Scriptlet相比,我建议使用上述语法。

portlet中是否只有一个processAction()方法?请在这里发布您的portlet代码。嗨,Thakkar,谢谢您的提问。感谢Liferay提供的MVCPortlet类型的portlet,我可以拥有多个processAction(),例如,我最初问题中的JSP代码调用以下方法:public void notifyDossiertoditTaul(ActionRequest请求,ActionResponse响应)抛出SystemException、IOException、PortalException{}