`
conkeyn
  • 浏览: 1504651 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Struts2中$,#,%的区别

阅读更多

转自:http://hi.baidu.com/dinfengbo/blog/item/c8500c34c80aa994a9018ecc.html

 

$ # %的区别
a)         $用于i18n和struts配置文件
b)         #取得ActionContext的值
c)         %将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用


应该是这样的:
如果你的变量放在jsp内置对象中则需要这样#request.user.username||#session.user.username
如果你想遍历一个List则你可以这样
<s:iterator value="items" id="item" status="st">
<s:if test="st==0">
<s:a href="#item.id">${item.name}</s:a>可以
<s:a href="%{item.id}">${item.name}</s:a>编译通不过
<s:a href="${item.id}">${item.name}</s:a>编译通不过
<h3><s:property value="username"/></h3>可以
<h3><s:property value="#item.username"/><h3>可以
<h3><s:property value="${item.username}"/><h3>编译通不过
<h3><s:property value="%{item.username}"/><h3>不到错得不到值(因为item没有item属性)
<h3><s:property value="%{username}"/><h3>可以
</s:if>
</s:iterator>
页面中直接调用(employee是Action中的成员变量有get和set方法)
<h2>%{employee.username}</h2>不报错但是得不到值页面显示%{employee.username}
<h3>#{employee.username }</h3>直接编译通不过
<h3>${employee.username }</h3>可以得到值
如果你自己在页面上组装自己的数据(参数)
<s:url id="userid" action="delete.action">
<s:param name="operation" value="7"></s:param>
</s:url>
那么这个时候你就必须要使用
<s:a href="%{userid}"></s:a>

综上所述:
注意
一:在 struts2的标签中绝对不能使用$符号eg<s:textfield value="${username}"/>一旦你这样用页面编译就通不过
二:建议在遍历list的时候不要这样 (#对象.属性和%属性)最好<s:property value="属性"/>.如果你想为你的用户名添加一个连接
可以这样<s:a href="#item.id"> <s:property value="username"/></s:a>
还可以这样:<s:a href="#item.id"><s:property value="#{item.username}"/></s:a>多此一举
还可以这样:<s:a href="#item.id"><s:property value="%{username}"/></s:a>也有点多此一举
还可以这样:<s:a href="#item.id">${item.username}</s:a>兼容性不佳
还可以这样:<a>${item.username}</a>但是这样与struts的关联不太紧密
三:"#"只能在遍历和request及session及applicatin等内置对象中使用
四:"$"主要是用来做简单的显示,注意不要将它写到struts2标签中去
五:"%"主要用在自己在页面组装一些数据特别是参数和遍历list中的属性的时候用
建议,“%”尽量用在组装页面数据的时候使用
“$”尽量用在获取简单的内容性能信息的时候使用
“#”尽量用在针对request、session等的时候使用
"#"和"%"必须配合struts2标签使用
遍历数据最好写法:
<s:iterator value="items" id="item">
<s:a href="%{属性名1}"> <s:property name="属性名2"/></s:a>
</s:iterator>
<s:select label="Role" name="employee.initRole" listKey="id" listValue="name" list="%{data}">
</s:select>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics