2013-01-05 58 views
0

使用下面如何在標籤中訪問struts中的變量?

<%! int role; > 

<% 
    UserMasterDTO userMasterDTO=(UserMasterDTO)session.getAttribute("userMasterDTO"); 
    role = userMasterDTO.getRole(); 
%> 

代碼我想這個值由我的支柱,如果標籤讀取。如何實現這一目標?
下面的代碼不正確的方式?

<s:if test="role == 1"> 
+0

請注意,在servlet中使用實例變量會導致現實生活中的各種問題;因爲這是一個角色,所以你正在暴露一個巨大的安全漏洞。也就是說,這在多個層面上是錯誤的 - 沒有理由使用scriptlet來做到這一點。但是,是的,你顯示的代碼不是正確的方式:S2標籤從值棧中獲取值,而不是servlet實例變量。 JSTL標籤也沒有,順便說一句,雖然他們不使用價值堆棧。 –

回答

2

嘗試支柱2.x的 '如果' 標籤:

<s:if test="#session.userMasterDTO.role==1"> 

<s:set name='role' value=xxxx> 

決不使用JSP中的Java代碼/模板是個好習慣。

+0

我找到了答案 <%! \t int role; int getRole() { System.out.println(role); \t 返回角色; } %> <(%)= getRole()%> 然後我可以在比較,如果如下面 user1950540

+1

@ user1950540僅僅因爲它*可能*並不意味着它是一個好主意;這太可怕了。 –

+1

@imxylz:你需要使用'#'來訪問會話'' –