首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GateIn 3.2忽略actionURL参数

GateIn 3.2忽略actionURL参数
EN

Stack Overflow用户
提问于 2012-05-23 04:10:17
回答 2查看 904关注 0票数 0

我使用的是GateIn 3.2.0.FINALTomcat 7 (GateIn-3.2.0.Final-tomcat7.zip)。看起来actionURL中的参数被忽略了。

我的控制器看起来是这样的:

代码语言:javascript
复制
@ActionMapping("search")
public void search(ActionRequest request) {
    LOG.info("doing search");
}

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

我的JSP如下所示:

代码语言:javascript
复制
<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>

当我按下submit按钮时,POST应该包含一个javax.portlet.action=save,但它不包含。没有包含名为javax.portlet.action的参数,也抛出了一个异常,因为找不到匹配的@ActionMapping方法。

form标记生成的URL如下所示:

代码语言:javascript
复制
/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()方法。

现在,如果我在war中部署完全相同的jBoss Portal 2.7.2&javax.portlet.action=save就包含在URL中。对于GateIn 3.1.0.FINALTomcat 6,情况也是如此。

PS

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

代码语言:javascript
复制
@ActionMapping({params = "myparam=save"})
public void save(ActionRequest request) {
    LOG.info("doing save");
}

...and:

代码语言:javascript
复制
<portlet:actionURL var="saveURL">
    <portlet:param name="myparam" value="save"/>
</portlet:actionURL>

...with同样的结果。作品在GateIn 3.1jBoss Portal 2.7.2中找到,但GateIn 3.2中找不到。

它也不适用于GateIn 3.2.0.FINALTomcat 6

编辑

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

代码语言:javascript
复制
<form:form id="${ns}-save" action="${saveURL}&javax.portlet.action=save" modelAttribute="createModel">
   <!-- omitted -->
</form:form>
EN

回答 2

Stack Overflow用户

发布于 2012-06-28 08:31:55

尝尝这个

代码语言:javascript
复制
ActionMapping({params = "action=save"})
public void save(ActionRequest request) { 
    LOG.info("doing save"); 
}

代码语言:javascript
复制
<portlet:actionURL var="saveURL" escapeXml="false">
    <portlet:param name="action" value="save"/>
</portlet:actionURL>

操作是默认的param名称,您必须执行其他更改才能使用自己的名称。

票数 1
EN

Stack Overflow用户

发布于 2012-05-30 08:23:48

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10713322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档