2011-02-14 3 views
3

Merci d'avance pour votre temps.comparaison de deux valeurs de chaînes valuestack dans JSP - struts2

Je dois présélectionner un bouton radio s'il a une valeur enregistrée. J'ai fondamentalement besoin de comparer 2 cordes dans le valuestack pour le déterminer. Pour l'instant, je ne peux pas utiliser <s:radio à cause de certaines règles métier que je dois attacher en fonction d'autres éléments d'entrée dans le formulaire.

J'ai essayé de faire <s:set la valeur de l'identifiant enregistré à l'intérieur s:iterate comme ci-dessous, puis comparez-les comme ci-dessous, mais évidemment, je n'ai pas compris.

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

Fondamentalement, j'ai besoin de comparer les deux chaînes, mon code est ci-dessous. Je sais que je ne peux pas comparer avec des égaux() comme j'ai ci-dessous - des idées?

Merci beaucoup!

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

Cordialement, VeeCan

+0

Ajout de la balise ognl. –

Répondre

8

Avez-vous essayé:

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

Si "id" est une chaîne OGNL vous permettra d'utiliser des méthodes de cordes.

+0

D'accord. Cela devrait fonctionner pour vous. La valeur de l'attribut test est évaluée en tant qu'expression OGNL. –

+1

Merci Steven & Quaternion pour votre contribution, cependant, id.equals (savedId) n'évalue pas à vrai. Au cours du débogage, lorsque j'ai essayé id == 1 (pour l'un des enregistrements que je suis en train de tester), cela fonctionne. Certainement pas le codage en dur, mais je ne comprends pas :( – veeCan

+0

Ok, je l'ai compris - '" fonctionne. @Steven & @Quaternion, – veeCan

1

valeur d'accès forme <s:iterator> dans <s:if> (OGNL avec <s:if> et <s:iterator>)

Par exemple: Supposons loadUserList est l'itérateur (contenant UserName et Address) devant être itéré en 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 with s:if and s:iterator