在Spring MVC中从JS / jQuery / Ajax执行ActionRequest调用

时间:2013-10-28 12:43:20

标签: java javascript spring-mvc liferay

我正在尝试使用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 ..

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

以下链接供参考

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

答案 1 :(得分: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方法。