Struts2(七)
以下内容是基于导入struts2-2.3.32.jar包来讲的
1.xml验证
Struts2提供了验证器,实现了通用的验证逻辑。例如:
非空验证器、长度验证器、日期验证器、email验证器等。具体定义位置:
xwork-core-2.3.4.1.jar包下/com/opensymphony/xwork2/validator/validators/default.xml
适合以下情况:
1.验证字段较多
2.验证逻辑简单且较多重复
3.xml文件过多,验证一个方法,需要有一个xml文件对应
控制器:
package com.rong.web.action; import com.opensymphony.xwork2.ActionSupport;
import com.rong.web.entity.Student; public class MyAction extends ActionSupport {
private static final long serialVersionUID = -351587239525292420L;
private Student student;
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
@Override
public String execute() throws Exception {
System.out.println("execute!!!");
return SUCCESS;
}
}
xml配置文件:
xml文件要与Action类在同一个目录
xml命名规则:
验证整个Action类所有的方法
xml文件命名为:类名-validation.xml
在官网下载的struts项目下搜索validation,找到Login-validation.xml文件,把该文件内容复制到MyAction-validation.xml文件中,修改文件内容:
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators>
<!-- 要验证的属性 -->
<field name="student.sname">
<!-- 字符串非空验证器,type是验证器名字,可在default.xml文件查找name -->
<field-validator type="requiredstring">
<message>学生名字不允许为空!!!</message>
</field-validator>
<!-- 字符串长度验证器 -->
<field-validator type="stringlength">
<!-- 参数名字name可在com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator查看 -->
<param name="minLength">6</param>
<param name="maxLength">18</param>
<message>长度区间必须在6-18之间</message>
</field-validator>
</field>
<!-- 可以继续添加field标签,添加属性验证-->
<!-- <field name="student.sage">
<field-validator type="int">
<message>xxxxxx</message>
</field-validator>
</field> -->
</validators>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default" >
<action name="check" class="com.rong.web.action.MyAction">
<result>/one.jsp</result>
<!-- 验证信息错误时,框架固定返回input视图 -->
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
<form action="${pageContext.request.contextPath }/check" method="post">
<input type="text" name="student.sname"/>
<!-- 获取后台返回的校验信息 -->
<!-- 显示指定错误信息 -->
<s:fielderror key="#student.sname"></s:fielderror>
<!-- 显示指定错误信息 -->
<s:fielderror fieldName="student.sname"></s:fielderror>
<!-- 可以显示所有的错误信息 -->
<s:fielderror></s:fielderror>
<input type="submit" value="登录"/>
</form>
验证某个方法
只需要把xml文件名更改为:类名-该方法的访问路径-validation.xml
例如:验证指定方法
命名规则: ActionClassName- ActionName -validation.xml
ActionClassName是某个Action类的类名
ActionName是某个方法的访问路径
UserAction-user_add-validation.xml
user是<action name="user_*">
xml约束:略。
2.国际化
国际化原理:
本地化信息
资源文件: 基本名字_语言名_国家码.properties
基本名.properties(默认)
加载资源文件
显示资源文件信息
资源文件:
中文:resource_zh_CN.properties
英文:resource_en_US.properties
默认:resource.properties
存储在同一Action所在包下!
struts.properties放在src根目录下,配置信息会覆盖原有的default.properties的配置信息
Struts2(七)的更多相关文章
- Struts2(七) Struts2访问Servlet的API
当接受表单参数,向页面保持数据时.要用到Struts访问Servlet 的API .下面只做参考,有错误或不同意见可以发送邮箱2440867831@qq.com .建议大家看struts文档,源代码 ...
- Struts2(七)基础小结
一.struts2和action 二.Result 三.struts.xml 四.namespace 第一种绝对路径 <form action="${pageContext.reque ...
- Struts2(七.删除和修改用户功能的实现)
一.删除功能 之前跳转用户列表的时候把用户id,用户名,用户密码存入了ActionContext 1.userlist.jsp <%@ page language="java" ...
- [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤
本文地址:http://blog.csdn.net/sushengmiyan/article/details/40303897 官方文档:http://struts.apache.org/releas ...
- struts2官方 中文教程 系列七:消息资源文件
介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...
- Struts2入门(七)——Struts2的文件上传和下载
一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...
- struts2 18拦截器详解(七)
ChainingInterceptor 该拦截器处于defaultStack第六的位置,其主要功能是复制值栈(ValueStack)中的所有对象的所有属性到当前正在执行的Action中,如果说Valu ...
- (七)Struts2 验证框架
所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 验证简介 Struts2 基于Struts2 拦截器,为 ...
- Struts2基础学习(七)—值栈和OGNL
目录: 一.值栈 二.OGNL表达式 一.值栈(ValueStack) 1.定义 ValueStack贯穿整个Acton的生命周期,每个Action类的对象实例都拥有一个ValueStack ...
- struts2.1.6教程七、国际化
尽管国际化不是重点内容,但是也有必要了解它的使用.在struts2中国际化有三种级别:分别是针对某个Action的action级别,针对package的package级别,针对webapp的webap ...
随机推荐
- 技巧-如何通过hive开发平台上传csv文件
通过数据交换平台上传较大的文件时,经常会出现导入失败情况,换种方式通过新数据开发平台(stark)也可以轻松实现外部数据与hive的数据关联. --第一步.导入csv文件到hive --stark数据 ...
- 双端队列 ADT接口 数组实现
Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" void DEQUEUEinit(int); ...
- Opencv3.0-python: 编译报错color.cpp:7456: error: (-215) scn == 3 || scn == 4 的解决方案
结合Opencv3.0读取视频时,出现报错:C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:11111: error: ( ...
- 96. Partition List [easy]
Description Given a linked list and a value x, partition it such that all nodes less than x come bef ...
- VIM - 标准模式下简单操作
1. 概述 标准模式下, 简单操作 移动 删除 复制粘贴 收益 熟练后, 编辑文本基本不需要鼠标操作了 思路 只讲最基本的, 避免初学时的混淆 把基本操作归类了, 方便理解 2. 准备 一篇篇幅较长的 ...
- 20155214曾士轩 2016-2017-2 《Java程序设计》第1周学习总结
20155214曾士轩 2006-2007-2 <Java程序设计>第1周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 1.标准API的架构指的是什么? 2.一个项 ...
- 20155325 2016-2017-2 《Java程序设计》第4周学习总结
教材学习内容总结 封装就是将数据与相关行为包装在一起以实现信息就隐藏. 多态是指不同的类对象调用同一个签名的成员方法时将执行不同代码的现象.多态是面向对象程序设计的灵活性和可扩展性的基础. 以封装为基 ...
- easyui-dialog打开多次数据串台问题
问题: 公司项目最近在用easyui写后台管理系统,发现dialog使用后总会报出莫名奇妙的问题 1.打开多次后数据显示上一次的,表单提交错误或者获取数据错误 2.来回跳转后,会有打开其它dialog ...
- day 11 大文件操作
1.f.read(), f.readline(), f.readlines() ##### 1. f.read() 整体读 返回字符串 In [2]: f = open("aaa.py ...
- CF 1083 A. The Fair Nut and the Best Path
A. The Fair Nut and the Best Path https://codeforces.com/contest/1083/problem/A 题意: 在一棵树内找一条路径,使得从起点 ...