Frage

Ich habe ein Objekt namens "Element". Es hat eine Eigenschaft namens "Typ"

Wenn ich das mache:

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

Ich verstehe das: q

Ok, ich kann den Wert lesen, aber wenn ich das versuche:

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

Ich bekomme eine leere Zeichenfolge

Das gibt mir eine leere Zeichenfolge:

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

Ich habe es sogar versucht:

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

Aber ich habe diese Zeichenfolge: Falsch

Wie werde ich "wahr"?

War es hilfreich?

Lösung

Ok, ich hatte damit für immer Probleme ... und fand schließlich heraus, wie das geht. "Q" ist ein String -Literal gegen 'Q', was ein Zeichen ist. deshalb...

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

wird immer zu falsch bewerten. Versuche stattdessen ...

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

Ich habe es auch auf diese Weise gesehen ...

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

(Beachten Sie die einzelnen Zitate um den Testattributwert.)

Ognl ist ein Dorn in meiner Seite. Ich vermute, das OP hat das bereits herausgefunden. Aber hoffentlich hilft das jemand anderem.

Andere Tipps

Ich glaube nicht, dass Sie EL in die Werteigenschaft dieses Tags einfügen können. Sie könnten das mit so etwas erreichen:

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

Weitere Beispiele hierfür sind hier

HINWEIS - Ich verwende Freemarker für die Ansicht, sodass das oben genannte möglicherweise nicht genau ist. In Freemarker können Sie dies mit einer Zuweisung tun:

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

Oder Sie können auch das If -Konstrukt wie oben verwenden:

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

Es ist so einfach wie:

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

Ich muss nur einzelne Zitate durch Doppelzitate und umgekehrt ersetzen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top