1.定义国际化文件
如果资源文件中有非西欧字符必须用native2ascii命令来处理该文件。
文件必须保存在WEB-INF/classes下。
资源文件命名规则是:name_语言代码_国家代码.properties
2.输出国际化信息
struts2提供了两种输出国际化信息的方法:
<1>:<S:text name="messageKey">
<2>:<S:property value="%{getText("messageKey")}"/>
3.数据校验
(1)ActionSupport类提供了数据初步验证的方法:String void validate(),通过AddFileldError(属性名,提示信息)来 增加错误信息,其中为了实现国际化,在addfileldError(属性名,getText("国际化资源名字"))来实现国际化。
界面通过<s:fielderror></s:fielderror>标签来获取错误信息。
(2)通过增加配置文件来实现数据校验。struts2提供了许多的校验器,分为表单域校验器和非表单域校验器。
本应用主要使用了requiredstring校验器,该校验器是一个必填校验器——指定某个表单域必须输入。
下面是校验规则的定义文件:
<?xml version="1.0" encoding="GBK"?> <!-- 指定校验规则文件的DTD信息 --> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd "> <!-- 校验规则定义文件的根元素 --> <validators> <!-- 校验第一个表单域:username --> <field name="username"> <!-- 该表单域必须填写 --> <field-validator type="requiredstring"> <!-- 如果校验失败,显示user.required对应的信息 --> <message key="user.required"/> </field-validator> </field> <!-- 校验第二个表单域:password --> <field name="password"> <field-validator type="requiredstring"> <!-- 如果校验失败,显示pass.required对应的信息 --> <message key="pass.required"/> </field-validator> </field> </validators> |
定义完该校验规则文件后,该文件的命名应该遵守如下规则:
ActionName-validation.xml:其中ActionName就是需要校验的Action的类名。
因此上面的校验规则文件应该命名为“LoginAction-validation.xml”,且该文件应该与Action类的class文件位于同一个路径下。
4. struts.properties 里的属性值知多少
struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的value就是一个Struts 2属性值。
struts.properties文件通常放在Web应用的WEB-INF/classes路径下。实际上,只要将该文件放在Web应用的CLASSPATH路径下,Struts 2框架就可以加载该文件。
其实,struts.properties文件的内容均可在struts.xml中以<constant name="" value=""></constant> 加载。推荐使用struts.xml中配置常量。
也可以通过web.xml中, 不过这种方式定义常量不推荐使用,降低了web.xml的可读性。
<init-param>
<param-name></param-name>
<param-value></param-value>
</init-param>
配置参数详细列表:
该属性指定加载Struts 2配置文件的配置文件管理器。该属性的默认值是org.apache.Struts2.config.DefaultConfiguration,这是 Struts 2默认的配置文件管理器。如果需要实现自己的配置管理器,开发者则可以实现一个实现Configuration接口的类,该类可以自己加载Struts 2配置文件。
指定Web应用的默认Locale。
struts.i18n.encoding
指定Web应用的默认编码集。该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312。
提示:当设置该参数为GBK时,相当于调用HttpServletRequest的setCharacterEncoding方法。
指定Struts 2默认的ObjectFactory Bean,该属性默认值是spring。
struts.objectFactory.spring.autoWrite
指定Spring框架的自动装配模式,该属性的默认值是name,即默认根据Bean的name属性自动装配。
struts.objectFactory.spring.useClassCache
该属性指定整合Spring框架时,是否缓存Bean实例,该属性只允许使用true和false两个属性值,它的默认值是true。通常不建议修改该属性值。
注意:如果需要使用cos或者pell的文件上传方式,则应该将对应的JAR文件复制到Web应用中。例如,使用cos上传方式,则需要自己下载cos框架的JAR文件,并将该文件放在WEB-INF/lib路径下。
struts.multipart.saveDir
struts.multipart.maxSize
struts.custom.properties
struts.mapper.class
struts.action.extension
struts.serve.static
struts.serve.static.browserCache
struts.enable.DynamicMethodInvocation
struts.enable.SlashesInActionNames
struts.tag.altSyntax
struts.devMode
struts.i18n.reload
提示:开发阶段将该属性设置了true,将可以在每次请求时都重新加载国际化资源文件,从而可以让开发者看到实时开发效果;产品发布阶段应该将该属性设置为false,是为了提供响应性能,每次请求都需要重新加载资源文件会大大降低应用的性能。
struts.ui.theme
struts.ui.templateDir
struts.ui.templateSuffix
struts.configuration.xml.reload
struts.velocity.configfile
struts.velocity.contexts
struts.velocity.toolboxlocation
struts.url.http.port
struts.url.https.port
struts.url.includeParams
struts.freemarker.manager.classname
struts.freemarker.wrapper.altMap
struts.xslt.nocache
struts.configuration.files
包的属性 name |extends | namespace |abstract
struts2的配置文件是从上到下处理的,所以父包应该在子包前面。
抽象包不能有Action的定义。
如果没有为包指定命名空间,包使用默认的命名空间””
当某个包指定命名空间后包下所有的Action处理的URL应该是命名空间+ACTION名。
命名空间只有一个级别。
<2>引入多个类似struts.xml文件
通过<include file="struts-xxx.xml"/>来导入
6. struts.xml中<result name="" type=""/>其中type的几种类型: