在JSP页面中,我可以使用它在Liferay中发出AJAX请求:

PortletURL portletURL = response.createRenderURL();
portleturl.setWindowState(LiferayWindowState.EXCLUSIVE);


我将这个portletURL作为URL传递给下面的JQuery函数

jQuery.ajax({
    type: "POST",
    url: portleturl ,
    success: function(msg) {
        alert( "Data Saved: " + msg );
    }
});


这是我在struts.xml文件中的操作映射:

<action name="helloForm" class="com.action.Struts2Action">
    <result name="input">/WEB-INF/view/index.jsp</result>
    <result name="success">/WEB-INF/view/result.jsp</result>
</action>


现在,请告诉我如何将名为helloForm的动作设置为portletURL

最佳答案

这在Liferay的代码中很常见。例如,在this JSP file中,将使用由定义的参数创建链接

<portlet:param name="struts_action" value="/asset_publisher/edit_subscription" />


(指向巨大的Liferay struts-config.xml文件中的此action mapping)。

因此,我想您只需要以相同的方式将参数添加到您的URL,唯一的区别是使用PortletURL对象:

PortletURL portletURL = response.createRenderURL();
portleturl.setWindowState(LiferayWindowState.EXCLUSIVE);
portletURL.setParameter("struts_action", "helloForm");

08-06 02:29