2016-11-29 3 views
2

Предполагая, что я хочу добавить параметр в тэг url в Struts 2 на основе условия, выраженного с помощью тега if.Условно добавьте параметр в URL-тег в Struts 2

Что не работает, потому что параметр добавляется в контейнер, который в этом случае является тегом if.

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

Есть ли альтернатива приведенному ниже коду, который работает достаточно хорошо, даже если параметр не установлен?

<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 установлен явно пустым (который преобразован в null), если выражение принимает значение false.

+0

Хороший вопрос. Вы можете использовать тернарный оператор внутри атрибута 'value'. BTW 'id'' 'вместо устаревших использует' var'. –

ответ

0

Вы не должны параметризуете if тега, вместо этого вы можете обернуть url тег вокруг 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

Это другая проблема. –

 Смежные вопросы

  • Нет связанных вопросов^_^