OGNL表达式的用法#,%,$

匿名 (未验证) 提交于 2019-12-03 00:27:02

1.1获取context中的数据

<body>     <h1>#号的 </h1>     <h3>获取context中的数据</h3>     <%     request.setAttribute("name","张三");     %>      <s:property value="#request.name"/> </body>

1.2使用#构建List集合

<s:iterator value="list">  </s:iterator> 如果想上面直接这样写的话,是从值栈中取值的  构建List集合: <s:iterator value="{'aa','bb','cc'}"  var="i">      <s:property value="i"/>   <!-- 能将list中的数据遍历出来 --> </s:iterator>  <!--  因为使用了var="i" ,这个i只要定义了,那么context区里也有,所以还可以使用下面的方法取值 --> <s:iterator value="{'aa','bb','cc'}" var="i">     <s:property value="#i"/>   <!-- 这是直接从context中取值 --> </s:iterator> <!-- 还可以从context域中取值   因为定义了var='entry'  --> <s:iterator value="#{'aa':'11','bb':'22','cc':'33' }" var="entry">         <s:property value="#entry.key"/>  --  <s:property value="#entry.value"/> </s:iterator>

1.2使用#构建Map集合

<!-- 构建map集合 --> <s:iterator value="#{'aa':'11','bb':'22','cc':'33' }">     <s:property value="key"/>  --  <s:property value="value"/> </s:iterator>

*struts2标签的其它的应用:

<!-- 单选(传统的写法)  --> <input type="radio" name="sex" value="男"/><input type="radio" name="sex" value="女"/><!-- 单选(struts2的标签) --> <s:radio list="{'男','女'}" name="sex" label="性别">  <!-- 这里的属性为list不是说一定要放list集合 --> <!-- 如果value的值跟外面文本的值一样的话就用list集合,如果不一样的话,就用map集合 --> </s:radio>
<h1>%号的用法:</h1> <!-- 需要将保存的值回显在文本框中 --> <% request.setAttribute("name", "张三"); %>  姓名:<s:textfield  name="name" value="<s:property value="#request.name"/>"/> <!-- 这种写法是无效的,struts的标签是不能被嵌套在标签中的 (会报错)--> </body> <1-- 如果使用传统的input标签嵌套struts标签是可以的,但是比较长 --> <input value="<s:property value="#request.name"/>"> 这种嵌套是可以的,但是比较长   下面这种直接在struts标签中取值,是会直接识别成字符串的 姓名:<s:textfield  name="name" value="#request.name"/> 这个时候就使用%了,强制识别成ognl表达式 姓名:<s:textfield  name="name" value="%{#request.name}"/> 如果是强制不解析的话,就加上单引号,就可以识别成普通的字符串了 <s:property value="%{'#request.name' }"/>  但是这种应用是比较少的.   

*属性文件:(在国际化中用)

*xml文件: 文件下载

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!