spring驗證框架

1.applicationContext.xml

 

//spring 驗證對應的message資源.
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basenames">
			<list>
				<value>WEB-INF/classes/message</value>
			</list>
		</property>
	</bean>
	
   	<bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator">
		<property name="validatorFactory" ref="validatorFactory"/>
	</bean>

    <bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory">
		<property name="validationConfigLocations">
			<list>
				<value>/WEB-INF/validator-rules.xml</value>
				<value>/WEB-INF/validator.xml</value>
			</list>
		</property>
	</bean>

 2.validator-ruls.xml 網上有。

 3.validator.xml自己定義的規則:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC 
    "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" 
    "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">

<form-validation>

    <formset>

        <form name="itemUpdateForm">
			<field property="item.name.fullName" depends="required">
				<arg0 key="item.name.fullName" />
			</field>
        </form>
        
        <form name="administratorEditForm">
			<field property="administrator.username" depends="required,minlength,maxlength">
			     <!-- msg標籤用於覆蓋資源文件的內容,name用戶指驗證規則,key與資源文件的屬性名一致 -->
                 <!-- arg標籤用於向資源文件傳遞參數,position用於指定參數的位置,key用於指定傳遞的值 -->  
				 <arg0 key="User name" />
				 <arg1 name="minlength" key="${var:minlength}"/>  
                 <arg1 name="maxlength" key="${var:maxlength}"/>  
                 <var>  
                     <var-name>minlength</var-name>  
                     <var-value>2</var-value>
                 </var>  
                 <var>  
                     <var-name>maxlength</var-name>
                     <var-value>6</var-value>
                 </var>  
			</field>
			<field property="administrator.password" depends="required,minlength,maxlength">
				  <!-- msg標籤用於覆蓋資源文件的內容,name用戶指驗證規則,key與資源文件的屬性名一致 --> 
                 <!-- arg標籤用於向資源文件傳遞參數,position用於指定參數的位置,key用於指定傳遞的值 -->  
				 <arg0 key="Password" />
				 <arg1 name="minlength" key="${var:minlength}"/>  
                 <arg1 name="maxlength" key="${var:maxlength}"/>  
                 <var>
                     <var-name>minlength</var-name>  
                     <var-value>2</var-value>  
                 </var>  
                 <var>  
                     <var-name>maxlength</var-name>  
                     <var-value>6</var-value>
                 </var>
			</field>
        </form>
        
        <form name="currencyEditForm">
			<field property="currency.currencyCode" depends="required">
				<arg0 key="currency.currencyCode" />
			</field>
			<field property="currency.name.fullName" depends="required">
				<arg0 key="currency.name.fullName" />
			</field>
        </form>
        
        <form name="categoryEditForm">
			<field property="category.name.fullName" depends="required">
				<arg0 key="category.name.fullName" />
			</field>
        </form>

    </formset>

</form-validation>

 

4.message.proerties.

 

data.empty=Please input data.
data.error=Incorrect data.
username.or.password.invalid=Username or password is invalid.

errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.

errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.

errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.

item.name.fullName=Item Name.

errors.userName.exists=administrator.username has exists.
errors.currency.fullName.exists=currency.name.fullName has exists.
errors.currency.currencyCode.exists=currency.currencyCode has exists.
errors.category.fullName.exists=category.name.fullName has exists.

 

  5.java

@Controller
@RequestMapping("/admin/administrator/*")
public class AdministratorController {

    @Autowired
    private Validator validator;

    @RequestMapping(value = "/admin/administrator/saveOrUpdate.do", method = RequestMethod.POST)
    public String onSubmit(@ModelAttribute("administratorEditForm") AdministratorEditForm administratorForm,
            BindingResult result, ModelMap model, HttpServletRequest request) {

        //spring 規則驗證 required,email等等
        validator.validate(administratorForm, result);

        //後臺自定義去重判斷..
if (!isAdd
                && !administratorService.validName(administratorForm.getAdministrator().getUsername(),
                        administratorForm.getAdministrator().getObjectId()) || isAdd
                && !administratorService.validName(administratorForm.getAdministrator().getUsername())) {
            result.rejectValue("administrator.username", "errors.userName.exists");
        }

        if (result.hasErrors()) {
            model.addAttribute("itemForm", administratorForm);
            if (!isAdd) {
                return "admin/administrator/update";
            } else {
                return "admin/administrator/save";
            }
        }

}
 

6.jsp

<tr>
	<td>User Name:</td>
	<td>
	 <form:input path="administrator.username" cssClass="input" maxlength="50"/>
	 <form:errors path="administrator.username" cssClass="red"/>
	</td>
</tr>
<tr>
	<td>Password:</td>
	<td>
		<form:password path="administrator.password" cssClass="input" maxlength="50"/>
		<form:errors path="administrator.password" cssClass="red"/>
	</td>
</tr>
發佈了21 篇原創文章 · 獲贊 1 · 訪問量 1436
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章