0

我正在使用GateIn 3.2.0.FINALTomcat 7GateIn-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,但它没有。不包含named参数,由于找不到匹配的方法javax.portlet.action而抛出异常。@ActionMapping

为 HTML中的标签生成的 URLform如下所示:

/portal/classic/home/Permissions?navigationalstate=<gibberish>&amp;portal:componentId=<an UUID>&amp;interactionstate=<gibberish>&amp;portal:type=action&amp;portal:isSecure=false

如果我用 firebug 手动编辑 URL 并添加&javax.portlet.action=save到它,它就像一个魅力,它会save()在控制器中找到方法。

现在,如果我在 URL中部署完全相同warjBoss Portal 2.7.2, 。&javax.portlet.action=save对于GateIn 3.1.0.FINALwith也是如此Tomcat 6

附言

我也尝试过使用另一个参数键:

@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.1and中找到jBoss Portal 2.7.2,但不是GateIn 3.2

它也不适用于GateIn 3.2.0.FINALwith Tomcat 6

编辑

忘了说这样做是可行的,但我不想使用它:

<form:form id="${ns}-save" action="${saveURL}&javax.portlet.action=save" modelAttribute="createModel">
   <!-- omitted -->
</form:form>
4

2 回答 2

1

尝试这个

ActionMapping({params = "action=save"})
public void save(ActionRequest request) { 
    LOG.info("doing save"); 
}

<portlet:actionURL var="saveURL" escapeXml="false">
    <portlet:param name="action" value="save"/>
</portlet:actionURL>

action 是默认参数名称,您必须进行其他更改才能使用您自己的。

于 2012-06-28T08:31:55.063 回答
0

尝试设置escapeXML="false"actionURL。

于 2012-05-30T08:23:48.170 回答