OGNL表达式
OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言,使页面更简洁。主要用法有:
访问值栈中action的属性
username = <s:property value="username"/>访问值栈中的对象的属性(需要get set方法)
<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user[\"age\"]"/>
访问值栈中对象的方法
<s:property value="password.length()"/>访问值栈中action的方法
<s:property value="add()" />访问静态方法
<s:property value="@sturts.action.Test@add()"/>访问静态属性
<s:property value="@sturts.action.Test@NAME"/>访问构造方法
<s:property value="new struts.action.User(8)"/>
访问List/Set/Map
<s:property value="users"/>访问List/Set中某个元素
<s:property value="users[1]"/>访问List中的元素某个属性的集合
<s:property value="users.{age}"/>访问List中某个元素的属性
<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/>访问Map中某个元素
<s:property value="users.zhangsan"/> | <s:property value="users['zhangsan']"/> | <s:property value="users[\"zhangsan\"]"/>访问Map中所有的Key
<s:property value="users.keys"/>访问Map中所有的Value
<s:property value="users.values"/>访问容器的大小
<s:property value="users.size()"/> | <s:property value="users.size"/>投影(? 选择满足条件的所有元素)
<s:property value="users.{?#this.age==1}[0]"/>投影(^ 选择满足条件的第一个元素)
<s:property value="users.{^#this.age>1}.{age}投影($ 选择满足条件的最后一个元素)
<s:property value="users.{$#this.age>1}.{age}"/>
在程序中放弃try catch处理异常,通过struts.xml中的<exception-mapping>处理,该标签即可放在<action>标签中,也可以作为默认处理方案放在<global-exception-mapping>中,例如:
<global-results> <result name="error">/error.jsp</result> </global-results> <global-exception-mappings> <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping> </global-exception-mappings> <action name="user" class="struts.action.UserAction"> <result>/admin.jsp</result> <exception-mapping result="error" exception="java.sql.SQLException" /> <result name="error">/error.jsp</result> </action>
用于项目的国际化,前台页面可以通过<s:text>或者<s:i18n>通过ActionSupport的getText方法取出配置文件中的内容,配置文件有三种写法
<constant name="struts.custom.i18n.resources" value="自定义名"></constant>
当对象中的属性没有get set方法时,通过自定义类型转换器进行转换,方法为:
public class MyPointConverter extends StrutsTypeConverter{ @Override public Object convertFromString(Map context, String[] values, Class toClass) { Point p = new Point(); String[] strs = (String[])values; String[] xy = strs[0].split(","); p.x = Integer.parseInt(xy[0]); p.y = Integer.parseInt(xy[1]); return p; } @Override public String convertToString(Map context, Object o) { // TODO Auto-generated method stub return o.toString(); } }
Struts工作流程
原文地址:http://blog.csdn.net/sinat_19425927/article/details/39829021