1.<s:textfield cssClass="label" name="name" value="#session.user.name"></s:textfield>
会出现如下问题:
"value" does not support runtime expressions
这是因为编译器不知道" "里的内容是OGNL表达式,Struts2的标签几十几百个,要记住哪一个标签的处理类将标签的属性作为OGNL表达式是一件很困难的事情,在不清楚处理类的处理方式时怎么办,%{}对于标签处理类来说,若处理类将属性值作为普通字符串则%{}符号包含的字符串当做OGNL表达式。
所以改成这样就好了:
<s:textfield cssClass="label" name="name" value="%{#session.user.name}"></s:textfield>
还有若用EL表达式:
<s:textfield cssClass="label" name="name" value="${sessionScope.user.name}"></s:textfield>
也提示同样错误。(原因struts2开始不支持El表达式)
2.struts2如何取session/request/application等作用域的值:
request.getSession().s比啊etAttribute("adminid", str);
<s:hidden name="adminid" value="#session.adminid"></s:hidden>
注意:struts2.1的版本中struts2标签不支持EL表达式。