我正在尝试使用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 ..
谢谢!
答案 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方法。