struts2标签:<s:if><s:else>实现选择输出
2011-08-19 08:25
357 查看
我的主界面现在想实现一个功能:
就是在主页上有个快速登录的侧边框,当用户在里面进行登录后,此框不再显示登录的信息,而是显示一个欢迎界面。
之前想的是写两个嵌套的页面,然后对session进行判断,后来突然想到struts2提供了一种标签,可以用于控制选择性的输出,然后查了些资料,了解了一些关于<s:if><s:else>的用法。
其实这个标签,只有一个统一的格式,就是:<s:if test="表达式">,当表达式返回一个true时,执行if体内的操作,否则执行<s:else>下的操作。
然后现在的问题就是要考虑test到底要写些什么,但是新的问题也出现了,那就是在test中关“# ” “%{ }”,“%{# }”的用法,查了很多资料,网上说,标签中用#可以取出堆栈上下文中的存放的对象.
用%{}可以取出存在值堆栈中的Action对象,直接调用它的方法.例如你的Action如果继承了ActionSupport .那么在页面标签中,用%{getText('key')}的方式可以拿出国际化信息. 而对于“%{#}”,一些人说,用于域对象中,比如%{#session.user.userName},将获得user对象的 userName属性值。
虽然这个我还是不太明白,但是我必须要实现从session中取出对象来判断是否为空,而我在用户成功登录后,通过ActionContext.getContext().getSession().put("user",this.getUsername()),将用户名放入session的user对象中,现在的问题就是要判断user是否为空。
我用了很多写法如test="#session.user!=null",但一直返回的是false,后来在网上看到说把session改成attr,于是我写成了<s:if test="#attr.user!=null">,居然成功了,原理暂时还没搞清楚,不过已经实现了自己想要的效果。
不过好像用struts2的拦截器也可以实现,自己先写一个拦截器,判断session是否为空,然后利用struts.xml映射,返回的不同的字符串对应不同的页面。
但是,相对之下,肯定直接用标签库要简单很多。呵呵。
就是在主页上有个快速登录的侧边框,当用户在里面进行登录后,此框不再显示登录的信息,而是显示一个欢迎界面。
之前想的是写两个嵌套的页面,然后对session进行判断,后来突然想到struts2提供了一种标签,可以用于控制选择性的输出,然后查了些资料,了解了一些关于<s:if><s:else>的用法。
其实这个标签,只有一个统一的格式,就是:<s:if test="表达式">,当表达式返回一个true时,执行if体内的操作,否则执行<s:else>下的操作。
然后现在的问题就是要考虑test到底要写些什么,但是新的问题也出现了,那就是在test中关“# ” “%{ }”,“%{# }”的用法,查了很多资料,网上说,标签中用#可以取出堆栈上下文中的存放的对象.
用%{}可以取出存在值堆栈中的Action对象,直接调用它的方法.例如你的Action如果继承了ActionSupport .那么在页面标签中,用%{getText('key')}的方式可以拿出国际化信息. 而对于“%{#}”,一些人说,用于域对象中,比如%{#session.user.userName},将获得user对象的 userName属性值。
虽然这个我还是不太明白,但是我必须要实现从session中取出对象来判断是否为空,而我在用户成功登录后,通过ActionContext.getContext().getSession().put("user",this.getUsername()),将用户名放入session的user对象中,现在的问题就是要判断user是否为空。
我用了很多写法如test="#session.user!=null",但一直返回的是false,后来在网上看到说把session改成attr,于是我写成了<s:if test="#attr.user!=null">,居然成功了,原理暂时还没搞清楚,不过已经实现了自己想要的效果。
不过好像用struts2的拦截器也可以实现,自己先写一个拦截器,判断session是否为空,然后利用struts.xml映射,返回的不同的字符串对应不同的页面。
但是,相对之下,肯定直接用标签库要简单很多。呵呵。
相关文章推荐
- 关于Struts2 <s:iterator><s:if><s:elseif><s:else>标签备忘录
- jstl 的<c:if>标签没有else的解决办法
- Struts2 控制标签:<s:if>、<s:elseif>和<s:else>
- struts2标签<s:if>和部分表达式的使用
- jstl 的<c:if>标签没有else的解决办法
- struts2中<s:if>标签的使用
- struts2 <s:property/>标签的使用--输出时间格式转换
- struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式
- Struts2中<s-if>和<s-iterator>标签的使用
- struts2中<s:if>标签
- struts2 <s:property/>标签的使用--输出时间格式转换
- struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式
- 开发<c:if>标签开发<c:if><c:else>标签开发迭代标签源代码
- Struts2中<s-if>和<s-iterator>标签的使用
- 如何在JSP页面中使用JSTL标签实现if和if-else判断,判断条件使用<%=value%>
- Struts2中<s-if>和<s-iterator>标签的使用
- Struts2中<s-if>和<s-iterator>标签的使用
- struts2中的<sd:datetimepiicker>标签的实现
- 关于JSP中单击任意标签弹出文件选择框(<input type="file"/>)的实现方法
- Struts2 控制标签:<s:if>、<s:elseif>和<s:else>