2016-11-29 4 views
2

ifタグで表される条件に基づいて、Struts 2のurlタグにパラメータを追加すると仮定します。条件付きでStruts 2のURLタグにパラメータを追加する

この場合、ifタグであるコンテナにparamが追加されているため、以下は動作しません。

<s:url id="url" value="path/to/something"> 
    <s:if test="%{#expression}"> 
    <s:param name="param" value="value" /> 
    </s:if> 
</s:url> 

paramが設定されていない場合でも非常にうまくいく以下のコードの代わりがありますか?

<s:if test="%{#expression}"> 
    <s:set name="param" value="value"/> 
</s:if> 
<s:else> 
    <s:set name="param" value=""/> 
</s:else> 

<s:url id="url" value="path/to/something"> 
    <s:param name="param" value="%{#param}" /> 
</s:url> 

スニペットは複数回含まれます。したがって、式がfalseと評価された場合、paramは空に(nullに変換される)明示的に設定されます。

+0

良い質問の周りurlタグをラップすることができ、ifタグをパラメータべきではありません。 'value'属性の中に三項演算子を使うことができます。 ' 'のBTW' id'は非推奨です。代わりに 'var'を使用してください。 –

答えて

0

あなたは代わりにあなたがif/elseタグ

<s:if test="%{#expression}"> 
    <s:url var="url" value="path/to/something"> 
    <s:param name="param" value="value" /> 
    </s:url> 
</s:if> 
<s:else> 
<s:url var="url" value="path/to/something"> 
    <s:set name="param" value=""/> 
</s:url> 
</s:else> 
+0

さて、自分の条件に基づいて個別に追加する必要がある他の多くのパラメータがあるとします。これにより、エラーが発生する可能性のあるコードの重複が発生します。 –

+0

これは別の問題です。 –

関連する問題