2016-11-29 20 views
2

假設我想基於用if標記表示的條件將參數添加到Struts 2中的url標記。有條件地將參數添加到Struts 2中的URL標記中

什麼不起作用,因爲該參數被添加到容器,在這種情況下是if標籤。

<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> 

該片段將包含多次。這就是爲什麼param顯式設置爲空(如果表達式計算結果爲空)(將其轉換爲空)。

+0

好問題的url標籤。你可以在'value'屬性中使用三元運算符。順便說一句''的'id'已被棄用,而不是使用'var'。 –

回答

0

你不應該參數化if標籤,而不是你可以環繞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

這是一個不同的問題。 –