web-dev-qa-db-ja.com

<s:if>ブール値のテスト式の評価が期待どおりに機能しない

Struts2タグbool_valを使用して変数<s:if>の値を確認したいのですが、機能していません。

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

テスト式もフォローしてみましたが、まだうまくいきません。

<!-- 
bool_val
bool_val==true
%{bool_val}
%{bool_val==true}
%{bool_val=="true"}
 -->
7
Akash Jain

この変数を値スタックに配置しない限り、Strutsタグでスクリプトレット変数を使用することはできません。ただし、スクリプトレット変数ではなく、変数値を使用することをお勧めします。

<%@ 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>
2
Roman C

Strutsタグを使用して、このような変数を作成します

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

これが サンプルチュートリアル です。

8
Visruth

VisruthCVによって提案されたものよりも短いバージョンがあります。

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

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

ブール値をAction属性と照合する場合は、次の方法があります。

class FooAction extends ActionSupport {
    private Boolean _bar = true;

    public Boolean isBar() { return _bar; }
}

そして、jspファイルで:

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

Actionクラスのブール変数のgetterメソッドがisBool()の場合、_<s:if test="bool">_キーを使用して、メソッド名からisを削除して使用します。メソッドがisApple()の場合は_<s:if test="Apple">_を使用します

0