关于Struts2中% # $获取值的用法与区别

应该是这样的:
如果你的变量放在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中的属性的时候用
建议,“%”尽量用在组装页面数据的时候使用,%计算OGNL表达式的值
“$”尽量用在获取简单的内容性能信息的时候使用
“#”尽量用在针对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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值