2013-05-23 37 views
8

Tôi đang cố gắng để tạo ra một biến động trong struts2 sử dụng bộ thẻStruts 2 biến động

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

numConst sẽ trả về một giá trị động mà lấy từ cơ sở dữ liệu. Ví dụ: nếu giá trị là NINE thì số phải là @[email protected]

Tôi đã đặt giá trị trong lớp java của mình sao cho @[email protected] sẽ trả lại 9.

Cho đến nay, giá trị có thể được hiển thị với không có vấn đề trong thẻ văn bản nếu tôi sử dụng

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

Nó sẽ trở lại 9 nhưng nó hiển thị không đúng khi tôi cố gắng sử dụng thẻ tài sản

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

nào tất cả các ví dụ trên sẽ cho tôi giá trị là @[email protected]. Lý do tôi cố gắng để có được giá trị từ thẻ tài sản là vì tôi muốn sao chép một cách chính xác làm thế nào để hiển thị giá trị để tôi có thể sử dụng chúng trong nếu thẻ như dưới đây ví dụ:

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

hoặc

<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 ... 
} 

ai có thể giúp tôi?

+0

Và 'CommonConstant' là gì? Có phải là 'enum'? Bạn có thể hiển thị mã không. –

+1

Phương thức 'getText' là để nhận văn bản được bản địa hoá. Tại sao bạn sử dụng nó như thế? –

+0

'gói xxx; lớp tóm tắt công khai CommonConstant { \t kết thúc tĩnh công cộng int NINE = 9; \t static static int cuối cùng NINEONE = 91; \t kết quả tĩnh công khai cuối cùng gấp đôi ADMIN_PGM = 1,4; \t ... bỏ qua ... } ' –

Trả lời

6

Dường như giải pháp thay thế nhưng bạn có thể sử dụng attr để đánh giá chuỗi.

<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 nó hoạt động .. cảm ơn người đàn ông! –

6

Bạn có thể sử dụng biểu thức ngoặc đơn để đánh giá kết quả của biểu thức.

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

Nhìn vào Expression Evaluation của hướng dẫn ngôn ngữ OGNL.

+0

vâng nó hoạt động quá .. cảm ơn –

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