Question

J'ai un objet appelé 'item'. il a une propriété appelée 'type'

quand je fais cela:

<s:property value="item.type" />

Je comprends ceci: Q

ok, donc je peux lire la valeur, mais quand j'essaye ceci:

<s:property value="item.type == 'Q'" /> 

je reçois une chaîne vide

cela me donne une chaîne vide:

<s:property value="%{#item.type == 'Q'}" />

J'ai même essayé ceci:

<s:property value="item.type.equals('Q')" />

mais j'ai eu cette chaîne: faux

comment puis-je être "vrai"?

Était-ce utile?

La solution

ok, j'ai eu du mal avec ça pour toujours ... et j'ai finalement trouvé comment faire ça. " Q " est un littéral de chaîne par rapport à 'Q' qui est un caractère. donc ...

<s:if test="%{#item.type == 'Q'}">

sera toujours évalué à faux. essayez plutôt ...

<s:if test="%{#item.type == \"Q\"}">

J'ai aussi vu cela se faire de cette façon ...

<s:if test='%{#item.type == ("Q")}'>

(remarquez les guillemets simples autour de la valeur de l'attribut de test.)

OGNL est une épine dans mon côté. Je suppose que le PO a déjà compris cela. mais j'espère que cela aidera quelqu'un d'autre.

Autres conseils

Je ne pense pas que vous puissiez insérer d'EL dans la propriété value de cette balise. Vous pouvez accomplir cela avec quelque chose comme:

<s:if test="%{#item.type == 'Q'}">
  true
</s:if>
<s:else>
  false
</s:else>

ici

Remarque - J'utilise freemarker pour la vue. Il est donc possible que ce qui précède n'est pas exact Dans Freemarker, vous pouvez le faire avec un attribut:

<#assign val = (item.type == 'Q')/>
${val}

Vous pouvez également utiliser la construction if comme ci-dessus:

<#if (item.type == 'Q')>true<#else>false</#if>
<s:set name="prop" value="%{'val'}"/>

<s:if test="%{#prop == 'val'}">
  <s:property value="%{#prop}" />
</s:if>

<s:elseif test="%{#prop=='val1'}">
  <s:property value="%{#prop}" />
</s:elseif>

<s:else>
  ...
</s:else>

C’est aussi simple que:

<s:property value='item.type == "Q"' />

Il suffit de remplacer les guillemets simples par des guillemets doubles et inversement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top