我使用 GateIn 3.2.0.FINAL
加上 Tomcat 7
( GateIn-3.2.0.Final-tomcat7.zip
),似乎忽略了 actionURL
中的参数。
我的控制器看起来是这样的:
@ActionMapping("search")
public void search(ActionRequest request) {
LOG.info("doing search");
}
@ActionMapping("save")
public void save(ActionRequest request) {
LOG.info("doing save");
}
我的JSP看起来是这样的:
<portlet:actionURL var="saveURL">
<portlet:param name="javax.portlet.action" value="save"/>
</portlet:actionURL>
<form:form id="${ns}-save" action="${saveURL}" modelAttribute="createModel">
<!-- omitted some html -->
<input type="submit" value="submit"/>
</form:form>
当我按下提交按钮时, POST 应包含一个 javax.portlet. action=save
, 但它没有。 没有包含名为 javax.portlet. action
的参数, 并且由于找不到匹配 ActionMapping
的方法, 因而丢弃了一个例外 。
HTML 中 form
标记生成的 URL 类似 :
/portal/classic/home/Permissions?navigationalstate=<gibberish>&portal:componentId=<an UUID>&interactionstate=<gibberish>&portal:type=action&portal:isSecure=false
如果我用火虫手动编辑 URL, 并添加 save ()
方法 。
现在,如果我在 jBos Portal 2.7.2
, jBos Portal 2.7.2
中部署同样的 war
, http://code_amp;javax.portlet. action=save 就包含在 URL 中。 GateIn 3.1.0.FINAL
与 Tomcat 6
同样适用。
<强 > pS 强 >
我还尝试过另一个参数密钥 :
@ActionMapping({params = "myparam=save"})
public void save(ActionRequest request) {
LOG.info("doing save");
}
...和:
<portlet:actionURL var="saveURL">
<portlet:param name="myparam" value="save"/>
</portlet:actionURL>
在 GateIn 3.1
和 jBos Portal 2.7.2
中找到工作,但不在 GateIn 3.2
中找到工作。
它也与 GateIn 3.2.0.FINAL
和 Tomcat 6
不合作。
<强 > EDIT 强 >
忘记提到做这个工作, 但我宁愿不使用它:
<form:form id="${ns}-save" action="${saveURL}&javax.portlet.action=save" modelAttribute="createModel">
<!-- omitted -->
</form:form>