2013-10-04 14 views
7

Struts2のs:formタグに動的action属性を指定する方法はありますか?私は以下のようなものが欲しい。Dynamic s:フォームアクション

<c:set var="formAction" value="baseAction" /> 
<c:if test="${someCondition}"> 
    <c:set var="formAction" value="childAction" />Ac 

<s:form method="post" action="${formAction}"> 
    <s:input....../> 
    <s:select...../> 
</s:form> 

これはjavascriptを使用して実現できますが、私はリファクタリングを避けたいと思います。 私はscripletsを使用してこれを達成しようとしましたが、問題はStruts2タグが実行時属性を取らないということです。私はOGNLでも試しましたが、どちらも助けになりませんでした。

答えて

7

Struts2タグを使用して値を設定し、条件を確認してからOGNLを使用してaction属性を設定します。

<s:set var="formAction" value="'baseAction'" /> 
<s:if test="some_condition"> 
    <s:set var="formAction" value="'childAction'" /> 
</s:if> 

<s:form method="post" action="%{#formAction}"> 
    <s:input....../> 
    <s:select...../> 
</s:form> 
2

アクションURLを動的を構築するためにs:urlタグを使用してください。

<s:url action="%{somePoperty}" var="myUrl"/> 
<s:form action="%{#myUrl}"> 

実際、Strutsタグの属性は、スクリプトレットだけでなく、JSTL EL式も受け入れません。

+0

アクション「」に「」タグを使用する必要はありません。 –