当前位置: 代码迷 >> Java Web开发 >> <s:if test="userList!=null">加#号与不加#号有什么区别?该怎么处理
  详细解决方案

<s:if test="userList!=null">加#号与不加#号有什么区别?该怎么处理

热度:538   发布时间:2016-04-17 11:05:18.0
<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,以上纯属个人使用经验总结,如有错误,麻烦大牛指出
  相关解决方案