【问题标题】:GateIn 3.2 ignores actionURL parametersGateIn 3.2 忽略 actionURL 参数
【发布时间】:2012-05-23 04:10:17
【问题描述】:

我正在使用 GateIn 3.2.0.FINALTomcat 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>&amp;portal:componentId=<an UUID>&amp;interactionstate=<gibberish>&amp;portal:type=action&amp;portal:isSecure=false

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

现在,如果我在jBoss Portal 2.7.2 中部署完全相同的war,则&amp;javax.portlet.action=save 将包含在URL 中。 GateIn 3.1.0.FINALTomcat 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.1jBoss Portal 2.7.2 中找到,但在GateIn 3.2 中找不到。

它也不适用于 GateIn 3.2.0.FINALTomcat 6

编辑

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

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

【问题讨论】:

    标签: spring jsp spring-mvc tomcat7 gatein


    【解决方案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 是默认参数名称,您必须进行其他更改才能使用您自己的名称。

    【讨论】:

    • 与 ActionMapping("save") 和 portlet:param name="javax.portlet.action" 是一回事。已经试过了。请参阅我的问题中的帖子脚本。
    【解决方案2】:

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

    【讨论】:

    • 嘿奥斯卡你有没有得到这个问题的解决方案其实我也面临着同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2011-12-01
    • 2016-04-21
    • 2013-06-14
    • 2015-05-13
    • 2018-01-12
    相关资源
    最近更新 更多