如何将struts.xml中定义的Struts2 Action设置为PortletURL

时间:2012-04-17 13:36:53

标签: java jsp struts2 liferay portlet

在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

1 个答案:

答案 0 :(得分:0)

在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");