struts.xml文件中action配置OGNL的投影映射OGNL表达式的符号

Posted 小鸭嘎嘎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts.xml文件中action配置OGNL的投影映射OGNL表达式的符号相关的知识,希望对你有一定的参考价值。


在struts.xml文件中不同的action配置,请求的路径是不一样的
1、请求 path = user!query.action; 配置如下;
<action name="user" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>

2、请求path = user.action ; 配置如下:
<action name="user" method="query" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>
user.action 因为匹配到struts2的后缀名称,所以struts2会实施拦截, 拦截匹配到path后执行该类的execute方法, 如果明确指明了
具体的方法名,就执行具体的方法;


3、第2步中的弊端在于,该类中一般会有很多个业务处理方法,不同的方法都需要配置一个action标签;

如下面这个例子,新增和查询需写两个标签;
<action name="user" method="query" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>
<action name="user2" method="add" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>

有没有一个办法,一个类只写一个action标签,然后该类中的所有业务处理方法,都共享该类的配置关系; 通配;

4、 每个类只需要写一个action标签,然后对该类中的方法名称进行通配;
<action name="user_*" method="{1}" class="com.bwf.code.action.UserAction">
<result name="queryUser">/query.jsp</result>
</action>

5、对所有类,所有方法进行通配(先暂时别用,先用第四个的通配)
<action name="*_*" method="{1}" class="com.bwf.code.action.{2}Action">
</action>



OGNL的投影映射
判断user属性存在某一个字符串的条件: <s:iterator var="x" value="#attr.userList.{?#this.getUser().indexOf(‘a‘)!=-1}">
判断user属性以某一个字符开头: <s:iterator var="x" value="#attr.userList.{?#this.getUser().startsWith(‘sh‘)}">



OGNL表达式的符号: #,$,%。
# 表示上下文作用域; (parameters、reqeust、session、application、attr)
parameters: #parameters.id[0]作用相当于 request.getParameter("id") .
request : #request.userList 作用相当于 request.getAttribute("userList");
session : #session.userList 作用相当于 session.getAttribute("userList");
application : #application.userList 作用相当于 application.getAttribute("userList");
attr: #attr.userList; 从request,session,application中从小到大的范围查找当前作用对象;

% 主要使用在資源文件中(如國際化、提示信息).
<s:property value="%{getText(‘bwf.jsp.query.name‘)}" />
可以在浏览器设置语言中设置不同的语言,即可看到国际化效果;

$ 主要作为传参存在;
<action name="ognl" class="com.lxit.struts.OgnlAction">
<result type="redirect">hello.action?name=${name}</result>
</action>





























































以上是关于struts.xml文件中action配置OGNL的投影映射OGNL表达式的符号的主要内容,如果未能解决你的问题,请参考以下文章

ssh框架-Struts2

Struts2学习记录-Value Stack(值栈)和OGNL表达式

Struts2的整体回顾(Action, 拦截器, 值栈, OGNL表示式, ModelDriven)

OGNL动态实现result

Struts2语法--Ognl

Struts2 OGNL表达式