日期:2014-05-19  浏览次数:20698 次

OGNL表达式,这两个标签的区别。。。。。。
1:<s:property value="#session.loginUser.userName">
2: <s:textfield label="用户名" value="%{#session.loginUser.userName}"></s:textfield>
1和2的区别 为什么2需要加个%{} 而1不需要用

------解决方案--------------------
只用过${}
------解决方案--------------------
1:Struts2中的两大"数据流":ActionContext和ValueStack,而"#"号是代表直接访问访问ActionContext中的数据,所以:<s:property value="#session.loginUser.userName">红色部分相当:ActionContext.getSession().getLoginUser().getUserName();

2:然而Struts2中的一些标签默认是不支持OGNL表达式的。打个比方:<s:property />标签是支持OGNL表达式的。所以你可以直接在里面写OGNL表达式,但是<s:textfield /></s:url/>这些标签是不支持的。所以%的作用就是显示的告诉他你要用OGNL表达式解析这段内容。否则的话他会直接打印字符串并不会解析其中的OGNL表达式

---------
有些记不清楚了。用词可能有些不当。但是大概意思已经非常清楚了。
------解决方案--------------------
探讨

1:Struts2中的两大"数据流":ActionContext和ValueStack,而"#"号是代表直接访问访问ActionContext中的数据,所以:<s:property value="#session.loginUser.userName">红色部分相当:ActionContext.getSession().getLoginUser().getUserName();

2:然而S……