Struts2进阶

今天我们继续来学习Struts2,这部分的知识点很多很杂,希望大家不要烦。

1. 自定义拦截器:定义的拦截器需要引用系统默认的defaultStack,可以使用<interceptor-ref name=“permissionStack”/>标签为包中的某个action显式地指定拦截器,也可以使用<default-interceptor-ref name=“permissionStack”/>标签把拦截器定义为默认拦截器

2. 输入校验:有两种实现方法

1)手工编写代码实现:通过重写validate()或validateXxx()方法实现, validate()方法会校验action中所有与execute方法签名相同的方法。 validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息

2)基于XML配置方式实现:Action类需要继承ActionSupport,然后提供校验文件,文件取名应遵守ActionClassName-validation.xml规则,该文件需要和action类放在同一个包下。

3)基于XML配置方式实现输入校验,在配置文件中,<field>指定action中要校验的属性,<field-validator>指定校验器,<message>为校验失败后的提示信息,系统提供了大量的校验器和相应的使用范例,需要的时候,可查看Struts2帮助文档

3.国际化:资源文件格式 baseName_language_country.properties,若配置全局资源,需要在在struts.xml中使用常量加载全局资源文 件。<constant name="struts.custom.i18n.resources" value="itcast" /& gt;,itcast为资源文件的基本名。

?在JSP页面中使用<s:text name=“”/>标签输出国际化信息

?在Action类中,可以继承ActionSupport,使用getText()方法,该方法的第一个参数用于指定属性文件中的key

?在表单标签中,通过key属性指定属性文件中的key,如:<s:textfield name="realname" key="user"/>

国际化也可配置包范围资源文件和Action范围资源文件;当查找指定key的消息时,系统会先从Action资源文件查找,如果没有找到对应的key,然后沿着当前包往上查找基本名为package 的资源文件,一直找到最顶层包。如果还没有找到对应的key,最后会从常量struts.custom.i18n.resources指定的资源文件中寻找。

使用<s:i18n>标签可以指定直接从某个特定的资源文件中取数据

4.OGNL表达式:OGNL是对象导航语言的缩写,Struts 2框架使用OGNL作为 默认的表达式语言;访问Ognl Context中的对象需要使用#符号标注命名空间,如#bar,如果要访问的属性属于根对象,则可以省略命名空间,直 接访问该属性;在Struts2中,ValueStack(值栈)是OGNL的根对象,故用户可以直接通过EL表达式来访问该值栈中对象的属性

5.Struts2常用标签:

1)property标签用于输出指定值 例:<s:property value="#name"/>

2)iterator标签用于对集合进行迭代,这里的集合包含List、Set和数组

3)if/elseif/else标签:进行逻辑判断

4)url标签:注意url标签的value属性默认不计算OGNL表达式的值,可以标记“%{}”来修改value默认属性,使其可以计算OGNL表达式的值

5)表单标签_checkboxlist,_radio和_select

6)<s:token />标签防止重复提交:?在表单中加入<s:token />?在Action中配置“token”拦截器和“invalid.token”结果(“token”拦截器在会话的token与请求的token不一致时,将会直接返回“invalid.token”结果)

你可能感兴趣的:(struts,iterator,input,action,语言,token)