2014-04-15 24 views
6

Tôi muốn kiểm tra giá trị của biến bool_val bằng cách sử dụng thẻ Struts2 <s:if> nhưng không hoạt động.<s:if> kiểm tra biểu thức đánh giá cho giá trị boolean không hoạt động như mong đợi

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

Tôi cũng đã thử các biểu thức kiểm tra sau đây, nhưng vẫn không hoạt động.

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

Trả lời

2

Bạn không thể sử dụng biến tập lệnh trong thẻ Struts trừ khi bạn đặt biến này vào ngăn xếp giá trị. Nhưng tốt hơn bạn không nên sử dụng một biến tập lệnh, mà là giá trị biến.

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

sử dụng Struts thẻ để tạo một biến như thế này

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

Đây là một sample tutorial.

2

Có một phiên bản ngắn hơn để một trong những đề xuất bởi Visruth CV:

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

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

Trong trường hợp bạn muốn kiểm tra các giá trị boolean chống lại một thuộc tính Action, đây là con đường để đi:

class FooAction extends ActionSupport { 
    private Boolean _bar = true; 

    public Boolean isBar() { return _bar; } 
} 

Và trong file jsp:

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

Tôi thích câu trả lời này tốt hơn bởi vì cách gọi 'isBar() 'phương pháp tài sản là ít phức tạp và dễ bị lỗi thì câu trả lời được lựa chọn bởi @ roman-c. – johnnieb

0

Nếu phương thức getter cho biến boolean của bạn trong lớp Hành động là isBool() thì sử dụng <s:if test="bool"> để xóa là lấy tên và sử dụng phương thức. nếu phương pháp là sử dụng isApple()<s:if test="apple"> đơn giản như

Các vấn đề liên quan