2014-04-15 14 views
6

Voglio controllare il valore della variabile bool_val utilizzando il tag Struts2 <s:if> ma non funziona.<s:if> la valutazione dell'espressione di test per il valore booleano non funziona come previsto

<%@ taglib prefix="s" uri="/struts-tags" %> 

<%boolean bool_val=true;%> 
real value : <%=bool_val%><br/> 
expression evaluated value : 
<s:if test="%{bool_val==true}"> 
    TRUE 
</s:if><s:else> 
    FLASE 
</s:else> 

Ho anche provato a seguire le espressioni di test, ma ancora non funziona.

<!-- 
bool_val 
bool_val==true 
%{bool_val} 
%{bool_val==true} 
%{bool_val=="true"} 
--> 

risposta

2

Non è possibile utilizzare una variabile di scriptlet nei tag Struts a meno che non si inserisca questa variabile nello stack di valori. Ma è meglio non usare una variabile scriptlet, ma il valore della variabile.

<%@ taglib prefix="s" uri="/struts-tags" %> 

<%boolean bool_val=true;%> 
real value : <%=bool_val%><br/> 
expression evaluated value : 
<s:set var="bool_val"><%=bool_val%></s:set> 
<s:if test="#bool_val == 'true'"> 
    TRUE 
</s:if><s:else> 
    FALSE 
</s:else> 
7

Usa montanti tag per creare una variabile come questo

<s:set var="bool_val" value="true" /> 
expression evaluated value : 
<s:if test="%{#bool_val == true}"> 
    TRUE 
</s:if><s:else> 
    FALSE 
</s:else> 

Ecco una sample tutorial.

2

c'è una versione più corta a quello suggerito da Visruth CV:

<s:set var="foo" value="true" /> 

expression evaluated value : 
<s:if test="foo"> 
    TRUE 
</s:if><s:else> 
    FALSE 
</s:else> 

Nel caso in cui si desidera controllare il valore booleano contro un attributo di azione, qui è la strada da percorrere:

class FooAction extends ActionSupport { 
    private Boolean _bar = true; 

    public Boolean isBar() { return _bar; } 
} 

E nel file jsp:

expression evaluated value : 
<s:if test="isBar()"> 
    TRUE 
</s:if> 
<s:else> 
    FALSE 
</s:else> 
+0

Mi piace questa risposta migliore perché chiamando l'Isbar() metodo 'proprietà è meno complesso e soggetto a errori allora la risposta scelta da @ romano-c. – johnnieb

0

Se il metodo getter per la variabile booleana nella classe Action è isBool() , utilizzare la chiave <s:if test="bool"> per rimuovere è dal nome del metodo e utilizzare. se il metodo è isApple() uso <s:if test="apple"> Semplice come quello

Problemi correlati