2009-07-30 9 views
5

tengo un objeto llamado 'artículo'. que tiene una propiedad denominada 'tipo'Cómo evaluar struts 2 s: if?

cuando hago esto:

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

me sale esto: Q

bien, para que pueda leer el valor, pero cuando intento esto:

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

me sale una cadena vacía

este dame una cadena vacía:

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

Incluso he intentado esto:

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

pero tengo esta cadena: falsa

cómo consigo 'verdadero'?

Respuesta

14

bien, luché con esto para siempre ... y, finalmente, encontré cómo hacer esto. "Q" es una cadena literal frente a "Q" que es un personaje. por lo tanto ...

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

siempre se evaluará como falsa. en lugar de tratar ...

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

También he visto que se haga de esta manera ...

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

(note las comillas simples alrededor del valor del atributo de prueba.)

OGNL es una espina en mi costado Supongo que OP ya se dio cuenta de esto. pero espero que esto ayude a alguien más.

2

No creo que pueda poner ningún EL dentro del valor de la propiedad de esta etiqueta. Se podría lograr eso con algo como:

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

Más ejemplos de esto son here

Nota - Yo uso FreeMarker para la vista, por lo que la anterior puede ser exactos. En FreeMarker usted puede hacer esto con un Asignar:

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

O, también se puede utilizar el caso de la construcción como la de arriba:

<#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 tan simple como:

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

sólo tiene que reemplazar comillas simples con comillas dobles y viceversa

Cuestiones relacionadas