2010-03-11 45 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>