0

我正在尝试使用 JavaScript 中的特定参数重定向到 portlet。我根据用户单击的链接获取参数(这部分没问题,我得到了我需要的所有数据),然后构造一个我尝试用简单的 JS window.location 获取的 URL。

我的控制器:

@RenderMapping
public String view(Model model){
    model.addAttribute("some", "stuff");
    return "myPortlet/view";
}

@ActionMapping(params = "action=importantAction")
public void doAction(ActionRequest request, ActionResponse response){
    String foo = request.getParameter("one");
    String bar = request.getParameter("two");
    System.out.println("Got " + one + " & " + two);
}

我的 JS:

function myFunction(one_val, two_val){
    window.location = "http://www.my.url.com/nameOfMyPortlet?one=" + one_val +
        + "&two=" + two_val + "&action=importantAction";
}

这将重定向到正确的页面,但是 action 参数一直被忽略并且整个 doAction 方法没有被执行。

如何从 JavaScript 将 action 参数传递给目标 portlet?

我正在使用 Liferay 和 Spring MVC ..

谢谢!

4

2 回答 2

1

您是否尝试使用以下方式创建操作 URL?

var portletURL = new Liferay.PortletURL('ACTION_PHASE'); portletURL.setWindowState("最大化"); 在 portletURL 中,您可以设置所需的参数来调用您的操作。

以下链接供参考

http://www.liferay.com/web/eduardo.lundgren/blog/-/blogs/liferay-portleturl-in-javascript

于 2013-10-28T13:25:31.373 回答
1

我设法找到了一种工作方式——它与@Ankit P 所写的非常相似:

我为参数创建了隐藏字段,然后发送了创建 URL 的表单:

JSP:

<liferay-portlet:actionURL var="link">
    <liferay-portlet:param name="action" value="importantAction"/>
</liferay-portlet:actionURL>
<form action="${link}" method="POST" name="the-form" id="the-form">
    <input type="hidden" value="" name="one" id="one"/>
    <input type="hidden" value="" name="two" id="two"/>
</form>

JS:

function myFunction(one_val, two_val) {
    document.getElementById("one").value = one_val;
    document.getElementById("two").value = two_val;
    document.getElementById("the-form").submit();
}    

控制器保持不变。要使用@ActionMapping你必须使用 POST 方法。

于 2013-10-28T14:26:10.450 回答