2012-05-23 37 views
0

我正在使用GateIn 3.2.0.FINALTomcat 7GateIn-3.2.0.Final-tomcat7.zip)。它看起來像actionURL中的參數被忽略。GateIn 3.2忽略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> 

當我按下提交按鈕,開機自檢應包括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 

如果我手動編輯與螢火蟲的網址,並添加&javax.portlet.action=save給它,它就像一個魅力和它發現save()方法在控制器中。

現在,如果我在jBoss Portal 2.7.2中部署了完全相同的war,&javax.portlet.action=save包含在URL中。 GateIn 3.1.0.FINALTomcat 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.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> 

回答

0

嘗試在actionURL設置escapeXML="false"

+0

謝謝,但我已經試過了。仍然不起作用。 – Oscar

+0

嘿奧斯卡你有沒有得到這個問題的解決方案,其實我也面臨着同樣的問題 – Shardendu

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> 

行動是默認PARAM名稱,你必須做其他改變使用自己的。

+0

這與ActionMapping(「save」)和portlet:param name =「javax.portlet.action」是一樣的。已經嘗試過。請參閱我的問題中的帖子腳本。 – Oscar