2009-07-30 11 views
5

Ich habe ein Objekt namens "Element". hat es eine Eigenschaft namens ‚Typ‘So bewerten Sie Struts 2 s: if?

, wenn ich dies tun:

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

bekomme ich diese: Q

ok, also kann ich den Wert lesen, aber wenn ich versuche, dies:

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

ich erhalte eine leere Zeichenfolge

dieses geben Sie mir eine leere Zeichenfolge:

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

ich dies auch versucht:

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

, aber ich habe diese Zeichenfolge: falsch

wie bekomme ich 'true'?

Antwort

14

ok, kämpfte ich mit diesem für immer ... und schließlich gefunden wie man das macht. "Q" ist ein Zeichenfolgenliteral gegen "Q", das ein Zeichen ist. daher ...

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

wird immer zu false ausgewertet. stattdessen versuchen ...

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

ich habe es auch so gemacht gesehen ...

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

(beachten Sie die einfachen Anführungszeichen um den Testattributwert.)

OGNL a Dorn in meinem Auge. Ich schätze, das OP hat das schon herausgefunden. aber hoffentlich hilft das jemand anderem.

2

Ich glaube nicht, dass Sie jeden EL in der Werteigenschaft dieses Tags setzen. Könnte man so wie mit etwas erreichen:

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

Weitere Beispiele hierfür sind here

Hinweis - ich Freemarker für die Ansicht zu verwenden, so dass die oben nicht genau sein kann. In Freemarker Sie dies mit einem assign tun könnten:

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

Oder könnten Sie auch die verwenden, wenn wie oben konstruieren:

<#if (item.type == 'Q')>true<#else>false</#if> 
0
<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> 
0

Es ist so einfach wie:

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

brauchen nur einfache Anführungszeichen mit doppelten Anführungszeichen und umgekehrt

ersetzen