2010-03-11 58 views
0

我有以下代碼。有條件的,如果在struts2標籤

<s:push value="#session['person']"> 
     <s:if test="%{admin=='y'}"> 
      <a class="add" href="/projit1/project/addProject.jsp">Create a Project</a> 
     </s:if> 
     </s:push> 

我試圖將一個對象從會話映射到valuestack並檢查其屬性的一個屬性admin的值。如果是'y',則出現鏈接「創建項目」。

但是這段代碼無法正常工作。如果我使用上面的代碼,管理員和普通成員都不會看到鏈接。可能是什麼問題呢 ?請幫忙

+0

只要確認這些,你的'Person'類中的'admin'屬性就必須有一個適當的setter方法。如果這很完美,爲什麼不直接嘗試條件而不將它推入價值堆棧呢? – 2010-03-11 08:27:26

+0

是的,我已經檢查過它。管理員完全設置。 – Anand 2010-03-11 08:38:27

+0

,你肯定會設置管理員小寫字母y? – JoseK 2010-03-11 09:05:03

回答

1

試試這個。

<s:push value="person"> 
     <s:if test="%{admin=='y'}"> 
     <a class="add" href="/projit1/project/addProject.jsp">Create a Project</a> 
     </s:if> 
    </s:push> 
+0

我在會話映射中設置了人物對象 – Anand 2010-03-11 08:46:48

+0

會話上下文在此處可用。就像JSTL一樣,它會在頁面中查找該屬性,然後請求,然後是會話,然後是應用程序。所以,在你的情況下,該屬性應該在會話狀態中找到。 – 2010-03-11 13:41:19

0

,你有你Person對象上getAdmin()isAdmin()我承擔?如果是這樣的話,我還假定該方法返回一個char'y'?我建議你嘗試顯示呼叫管理員的結果並從那裏出發。例如

<s:push value="#session['person']"> 
    admin: <s:property value="%{admin}" /> 
    <s:if test="%{admin=='y'}"> 
    <a class="add" href="/projit1/project/addProject.jsp">Create a Project</a> 
    </s:if> 
</s:push>