日期:2014-05-17  浏览次数:20759 次

<s:if test="#userList!=null">加#号与不加#号有什么区别?
我在Action里面用actionContext.getContex().put("userList",userList)传值,页面<s:if test="#userList!=null">可以if判断,如果我写成<s:if test="userList!=null">行吗?是不是相应的action里面要改成servletActionContext.getRequest().setAttrubute("userList",userList);

<s:if test="#userList!=null">这里加#号与不加#号有什么区别?

我见过不要#成功了的,但此时为什么不加%{..},test里面的都默认当成变量而不是字符串吗?#是从value stack中读值?不写#是不是就相当于#request.或#session.等?

------解决方案--------------------
不加#号表示是从Struts2的值栈中取值,简单地说就是你的action中有userList属性,并且有相应的getter/setter方法,那么你就可以不加#号,其他的情况一般都要加#号。
------解决方案--------------------
这个是ognl的问题,#限定取值的位置,比如#attr
------解决方案--------------------
<s:if>是struts2的标签,#代表取当前页面中的值,取request的值应该要这样:#request.userList,取session中的值:#session.userList,取action中自定义的含有getter/setter方法的直接:userList。详细使用方法,可以去查API,以上纯属个人使用经验总结,如有错误,麻烦大牛指出