validation.xml的配置

 validation.xml的配置

validation.xml文件是Validator框架需要的另一个配置文件。该文件是特定于应用程序的,由开发人员自己来创建。它描述了那些具体应用中的ActionForm所使用的validator-rules.xml文件中的有效性验证规则。通过ActionForm在validation.xml文件中配置所需要的验证规则,开发人员就不必将验证逻辑硬编码放在ActionForm的内部。一个简单的validation.xml文件如例程5-7所示。

例程5-7  validation.xml实例

 

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3// EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

<form-validation> <formset> <form name="loginActionForm"> <field property="username" depends="required"> <arg0 key="prompt.username"/> </field> <field property="password" depends="required, minlength,maxlength"> <arg0 key="prompt.password"/> <arg1 key="${var:minlength}" name="minlength" resource="false"/> <arg2 key="${var:maxlength}" name="maxlength" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>16</var-value> </var> <var> <var-name>minlength</var-name> <var-value>3</var-value> </var> </field> </form> </formset> </form-validation>

validation.xml文件中包含form-validation、global、formset、form、field、msg、arg、var等元素。下面对它们一一进行介绍。
1.form-validation元素

<form-validation>元素是validation.xml文件的根元素。它包含2个子元素,即<global>元素和<formset>元素,其在dtd中的定义如下:

<!ELEMENT form-validation (global*, formset*)>

2.global元素

global元素允许开发人员配置可以用在文件其他部分中的constant元素,也就是全局常量。这与在Java文件中定义一个常量,然后在类中使用该常量的方式相似。constant元素以名字和值的方式出现。例如:

<form-validation>
<global>
<constant>
<constant-name>zip</constant-name>
<constant-value>^\d{5}\d*$</constant-value> <!--常量值,这里是一个正则表达式-->
</constant>
<global>
<formset>
<form name="registerForm">
<field property ="zipPostal" depends="required, mask">
<arg0 key="registerForm.zippostal.displayname"/>
<var>
<var-name>mask</var-name>
<var-value>${zip}</var-value>
</var>
</field>
</form>
</formset>
<form-validation>

在以上代码中,在<global>元素中定义了一个常量zip,在<formset>元素中可以通过${constant-name}的形式,如${zip},来引用这个常量。

3.formset元素

<formset>元素包含两个子元素,即<constant>元素和<form>元素。<constant>元素可以出现零次或多次,<form>元素至少出现一次。这里的<constant>元素中定义的constant常量是局部常量,只能在当前<formset>元素内引用。

<formset>元素有2个属性,即language和country,它们用于国际化。

4.form元素

form元素定义了一套将要进行有效性验证的域(field),其name属性指定对应表单的名字,并且name属性与Struts配置文件中的form-bean元素的name属性一致。

form元素可以包含多个field元素。

5.field元素

一个field元素对应于一个表单中需要验证的字段。它的属性如表5-3所示。

表5-3  field元素的属性

属    性

描    述

property

将要进行有效性验证的ActionForm的属性名

depends

指定字段的验证规则,多个规则之间以逗号分开

page

如果对应的ActionForm是一个跨页表单,可能包括一个page属性与表单中的page属性相对应,用户指定该字段应该在哪一页被处理

indexedListProperty

后循环列表,执行该域的有效性验证

6.msg元素

field元素的msg子元素指定验证规则对应的消息文本。该消息文本将替代默认的消息文本,即validator-rules.xml中定义的消息文本。msg元素的值必须是应用程序消息资源包中的某个消息资源的关键字。例如:

<field property="lastName" depends="required, mask" page="1">
<msg name="mask" key="registerForm.lastname.maskmsg"/>
<arg0 key="registerForm.lastname.displayname"/>
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>

当lastName字段有效性验证失败时,显示的错误消息是消息资源中registerForm. lastname.masking键所指的消息文本。

msg元素的属性如表5-4所示。

表5-4  msg元素的属性

属    性

描    述

key

指定绑定的消息资源中的消息文本或直接指定消息文本

name

指定验证规则的名字

bundle

指定绑定的消息资源的名称

resource

当该属性值为true时,表示使用来自消息资源的消息文本;当该属性值为false时,表示直接在key属性中设置消息文本。默认值为true。

7.arg元素

arg元素可以用来向消息文本中传递参数。它有name、key、resource和position等几个属性,name、key、resource属性的含义与msg元素的属性相当。position属性用来指定消息文本中的替换位置。

例如,例程5-8是关于minlength验证规则的配置文件。

例程5-8  minlength验证规则的配置文件

<field property="password"
depends="required, minlength">
<arg0 key="prompt.password" />
<arg1 key="${var:minlength}" name="minlength"
resource="false" position="1"/>
<var>
<var-name>minlength</var-name>
<var-value>3</var-value>
</var>
</field>

在validator-rules.xml文件中,minlength验证规则的默认消息文本是:

{0} can not be less than {1} characters.

在例程5-8中,position属性的值为1的arg元素定义中,name属性的值为minlength,表示仅适用于minlength验证规则,resource属性的值为false,表示可直接在key属性中设定消息文本,即key属性的值为${var:minlength},在这里是3。把以上代码中两个arg的key值分别放入minlength验证规则的默认消息文本中的相应位置,最后返回的消息文本应该是:

 password can not be less than 3 characters.

8.var元素

var元素用来向验证规则传递参数。例如在例程5-7中,定义了maxlength和minlength两个参数,分别传递给maxlength和minlength验证规则。


arg元素也可以访问var元素,语法形式是${var:var-name}。例如,在例程5-7中的${var:maxlength}和${var:minlength}的使用。

 

 

 

9.<html:messages>
Action 中 :
        ActionMessages message = new ActionMessages();
        message.add(" 消息句柄 ",new ActionMessage(" 资源文件中 Key 值 ",String 类型描述信息 ));
        this.addMessages(request,message);
        return ActionForward;
JSP 页面中 :
        <html:messages id=" 指定使用消息的标识 " property=" 消息句柄 " message="true|false">
           <bean:write name=" 以上所指 ID 标识 "/>
        </html:messages>

例如:

Action方法中:
saveMessage(request,"页面要显示的消息");

Action的调用的方法,可以写真Action实现类的父类 BaseDispatchAction:

public ActionMessages saveMessage(HttpServletRequest request, String key) {
      ActionMessages messages = new ActionMessages();
      return saveMessage(messages, request, key);
}

protected ActionMessages saveMessage(ActionMessages messages,
       HttpServletRequest request, String key) {

      messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(key));
      saveMessages(request, messages);
      return messages;
}

页面:

<html:messages id="msg" message="true"><bean:write name="msg"/></html:messages>

 

<html:errors>
Action 中 :
        ActionMessages message = new ActionMessages();
        message.add(" 消息句柄 ",new ActionMessage(" 资源文件中 Key 值 ",String 类型描述信息 ));
        this.saveErrors(request,message);
        return ActionForward;
JSP 页面中 :
        <html:errors property=" 消息句柄 "/>

如果Action中这样设定(false),页面的提示信息将不从资源文件里读取:
        ActionMessages message = new ActionMessages();
        message.add("消息句柄",new ActionMessage("String类型描述信息));",false));
        this.saveErrors(request,message);
        return ActionForward;
JSP页面:
        <html:errors/>或<html:errors property="消息句柄"/>


 10.

关于message-resources 配置中parameter的值  

 
³parameter的值,可以指定资源文件的位置和名称
³举例:
³<message-resources parameter=" MessageResources" />
³表示在类路径根目录(WEB-INF/ classes目录)下有MessageResources_XX_XX.properties文件(注意:国家代码可以省略,跟java中对资源属性文件的处理一样)
³<message-resources parameter=" resources.application"/>
³表示在类路径根目录下,有一个resources目录,在这个resources目录中存放着所有的application_XX_XX.properties资源属性文件
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Spring Boot 项目中使用 Druid 可以通过配置 application.properties 或 application.yml 来实现,不需要再像传统的 Spring 项目一样在 application.dao.xml 中进行配置。 以下是使用 application.properties 配置 Druid 连接池的示例: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # Druid 监控配置 spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 spring.datasource.druid.test-on-borrow=true spring.datasource.druid.validation-query=SELECT 1 spring.datasource.druid.filters=stat,wall,log4j2 spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.web-stat-filter.url-pattern=/* spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin spring.datasource.druid.stat-view-servlet.reset-enable=false ``` 这里的配置包括了数据库的连接信息和 Druid 监控的一些配置。如果你使用的是 application.yml 配置文件,那么对应的配置项也是类似的,只是语法略有不同。 注意,使用 Spring Boot 配置 Druid 连接池时,需要引入 Druid 的 starter 包,即: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> ``` 这个 starter 包会自动配置 Druid 连接池和监控组件,而不需要手动在配置文件中声明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值