2014-04-15 9 views
6

Ich möchte den Wert der Variablen bool_val mit Struts2-Tag <s:if> überprüfen, aber es funktioniert nicht.<s:if> Testausdruck Bewertung für booleschen Wert funktioniert nicht wie erwartet

<%@ 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> 

Ich habe auch versucht zu Ausdrücke folgenden Tests, aber immer noch nicht funktioniert.

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

Antwort

2

Sie können eine Scriptlet-Variable nicht in Struts-Tags verwenden, es sei denn, Sie haben diese Variable auf den Wertestapel gesetzt. Aber Sie sollten besser keine Scriptlet-Variable verwenden, sondern den Variablenwert.

<%@ 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

Verwenden Streben Tag eine Variable wie diese hier

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

zu schaffen, ist ein sample tutorial.

2

Es ist eine kürzere Version, die der von Visruth CV vorgeschlagen:

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

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

Falls Sie den Booleschen Wert gegen ein Attribut Aktion überprüfen möchten, hier ist der Weg zu gehen:

class FooAction extends ActionSupport { 
    private Boolean _bar = true; 

    public Boolean isBar() { return _bar; } 
} 

Und in der jsp-Datei:

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

mir diese Antwort besser gefallen, weil Aufruf der 'Isbar()' Eigenschaft Methode ist weniger komplex und fehleranfällig dann die gewählte Antwort von @ römisch-c. – johnnieb

0

Wenn die Getter-Methode für Ihre boolesche Variable in der Aktionsklasse ist, dann verwenden Sie <s:if test="bool"> Schlüssel ist zu entfernen ist von der Methode Name und verwenden. wenn Methode ist isApple() Verwendung <s:if test="apple"> einfach wie die