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

本文介绍了OGNL表达式在Struts2框架中的应用,包括#号获取context数据及构建集合,%号强制解析OGNL表达式,以及$号在配置文件中的使用。通过实例展示了如何利用这些特性进行高效开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OGNL中的特殊字符:

1.#号:

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>

2.%号:强制解析OGNL(还有强制不解析OGNL)

<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' }"/>  但是这种应用是比较少的.


3.$号:主要用途是在配置文件中使用OGNL,

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

*xml文件: 文件下载

总结:在值栈里面存数据,在任何地方否可以获取到响应的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值