GateIn 3.2忽略actionURL参数

时间:2012-05-23 04:10:18

标签: spring jsp spring-mvc tomcat7 gatein

我正在GateIn 3.2.0.FINAL使用Tomcat 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,但事实并非如此。不包含名为javax.portlet.action的参数,并且抛出异常,因为找不到匹配的@ActionMapping方法。

为HTML中的form标记生成的网址如下所示:

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

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

现在,如果我在war中部署完全相同的jBoss Portal 2.7.2,则&javax.portlet.action=save会包含在网址中。使用GateIn 3.1.0.FINAL的{​​{1}}也是如此。

PS

我还尝试过另一个参数键:

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.1找到,但不能找到jBoss Portal 2.7.2

它也不适用于GateIn 3.2GateIn 3.2.0.FINAL

修改

忘记提及这样做有效,但我不想使用它:

Tomcat 6

2 个答案:

答案 0 :(得分: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是默认的param名称,您必须进行其他更改才能使用自己的名称。

答案 1 :(得分:0)

尝试在actionURL上设置escapeXML="false"