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文件: 文件下载
文章来源: OGNL表达式的用法#,%,$