сравнение двух значений строки стека значений в JSP - struts2 - PullRequest
3 голосов
/ 14 февраля 2011

Заранее спасибо за ваше время.

Мне нужно предварительно выбрать переключатель, если он имеет сохраненное значение. Мне нужно сравнить две строки в стеке значений, чтобы определить это.

(сейчас я не могу использовать <s:radio из-за некоторых бизнес-правил, которые мне нужно прикрепить на основе других элементов ввода в форме).

Я пытался сделать <s:set значение сохраненного идентификатора внутри s:iterate, как показано ниже, а затем сравнить их, как показано ниже, но, очевидно, я не понял это правильно.

<s:set var="savedId" value="%{flag.problemId}"/> 
              <s:iterator value="problemIdList"> 
                    <s:set var="currentId" value='<s:property value="id"/>' />                   
                        <s:if test="%{#currentId.equals(#savedId)}" >
                                <input checked="checked" type="radio" name="problemId" id="problemId" value='<s:property value="id"/>'/> <s:property value="description"/> <br/>
                        </s:if>
                <s:else>
                    <input type="radio" name="problemId" id="problemId" value='<s:property value="id"/>'/> <s:property value="description"/> <br/>
                </s:else>                       
             </s:iterator>

В основном мне нужно сравнить две строки, мой код приведен ниже. Я знаю, что не могу сравнить с equals (), как у меня ниже - есть идеи?

Спасибо большое!

<s:set var="savedId" value="%{flag.problemId}"/>  <s:iterator value="problemIdList">                                 
<s:if test=' <s:property value="id"/>.equals(<s:property value="savedId"/>) '>
    <input checked="checked" type="radio" name="problemId" id="problemId" value='<s:property value="id"/>'/>            <s:property value="description"/> <br/>
</s:if>
<s:else>
    <input type="radio" type="radio" name="problemId" id="problemId" value='<s:property value="id"/>'/>                     <s:property value="description"/> <br/>
</s:else>                       

С уважением, VeeCan

Ответы [ 2 ]

8 голосов
/ 15 февраля 2011

Вы пробовали:

<s:if test='id.equals(savedId)'>

Если "id" является строкой, OGNL позволит вам использовать методы String.

1 голос
/ 17 января 2012

Форма значения доступа <s:iterator> в <s:if> (ognl с <s:if> и <s:iterator>)

Например: предположим, loadUserList - это итератор (содержащий UserName и Address), который будет повторяться в jsp,

     UserName:<s:property escape="false" value="userName" />
     Address:<s:property escape="false" value="address" />
     <s:if test='userName.equals("Admin")'>This is admin User</s:if>
     <s:else>This is not an admin user!</s:else>

OGNL с s: if и s: итератор

...