( )を使っGateIn 3.2.0.FINAL
ています。のパラメータが無視されているようです。Tomcat 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のタグ用に生成された URL はform
次のようになります。
/portal/classic/home/Permissions?navigationalstate=<gibberish>&portal:componentId=<an UUID>&interactionstate=<gibberish>&portal:type=action&portal:isSecure=false
Firebug を使用して URL を手動で編集して追加&javax.portlet.action=save
すると、魅力的に機能save()
し、コントローラーでメソッドが見つかります。
これで、まったく同じものを にデプロイするとwar
、jBoss Portal 2.7.2
URL&javax.portlet.action=save
に含まれます。GateIn 3.1.0.FINAL
withについても同様ですTomcat 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.1
ありjBoss Portal 2.7.2
ませんGateIn 3.2
。
また、 では機能しませGateIn 3.2.0.FINAL
んTomcat 6
。
編集
これを行うとうまくいくことを忘れていましたが、使用しないことをお勧めします。
<form:form id="${ns}-save" action="${saveURL}&javax.portlet.action=save" modelAttribute="createModel">
<!-- omitted -->
</form:form>