2013-05-23 21 views
8

sto cercando di creare una variabile dinamica nel Struts2 utilizzando tag setStruts 2 variabili dinamiche

<s:set var="myNum" value="numConst" /> 
<s:set var="number" value="%{getText('@[email protected]'+#myNum)}" /> 

numConst restituirà un valore dinamico che recuperati dal database. Ad esempio, se il valore è di nove quindi il numero dovrebbe essere @[email protected]

ho impostato il valore nella mia classe java in modo che @[email protected] tornerà 9.

Finora, il valore può essere visualizzato senza alcun problema nel tag di testo se uso

<s:text name="%{getText(#number)}" /> 

Si tornerà 9 ma visualizzati correttamente quando ho provato ad utilizzare tag di proprietà

<s:property value="%{getText(#number)}" /> 
<s:property value="%{#number}" /> 
<s:property value="#number" /> 
<s:property value="%{getText('%{getText(#number)}')}" /> 

Quale tutti gli esempi precedenti mi daranno il valore @[email protected]. La ragione per cui cerco di ottenere il valore di tag di proprietà è perché voglio copiare il modo corretto su come visualizzare il valore in modo che io possa utilizzare in caso di tag come qui di seguito esempi:

<s:if test="#number == 9"> 
    do something 
</s:if> 

o

<s:if test="%{getText(#number)} == 9"> 
    do something 
</s:if> 

CommonConstant:

package xxx; 

public abstract class CommonConstant { 
    public static final int NINE = 9; 
    public static final int NINEONE = 91; 
    public static final double ADMIN_PGM = 1.4; 
    // ... omitted ... 
} 

qualcuno può aiutarmi?

+0

E che cosa è 'CommonConstant'? È enum? Potresti mostrare il codice. –

+1

Il metodo 'getText' è per ottenere testo localizzato. Perché lo stai usando così? –

+0

'pacchetto xxx; public abstract class CommonConstant { \t public static final int NINE = 9; \t public static final int NINEONE = 91; \t public static final double ADMIN_PGM = 1.4; \t ... omesso ... } ' –

risposta

6

Sembra una soluzione alternativa ma è possibile utilizzare attr per valutare la stringa.

<s:set var="myNum" value="numConst" /> 
<s:set var="number" value="'@[email protected]'+#myNum" /> 

<s:property value="#attr[#number]"/> 

<s:if test="#attr[#number] == 9"> 
    do something 
</s:if> 
+0

wow funziona .. grazie amico! –

6

È possibile utilizzare l'espressione parenthesesized per valutare risultato dell'espressione.

<s:if test="#number(0) == 9"> 
    <s:property value="%{#number(0)}" /> 
</s:if> 

sguardo al Expression Evaluation della guida di lingua OGNL.

+0

sì, funziona anche ... grazie –

Problemi correlati