Mingyang.net:用註解校正資料

來源:互聯網
上載者:User

標籤:style   blog   http   color   java   os   io   資料   

註解校正依賴的是javax.validation和hibernate-validaton。

<dependency>    <groupId>javax.validation</groupId>    <artifactId>validation-api</artifactId>    <version>1.1.0.Final</version></dependency><dependency>    <groupId>org.hibernate</groupId>    <artifactId>hibernate-validator</artifactId>    <version>5.0.1.Final</version></dependency>


啟用Spring的註解驅動:

<mvc:annotation-driven />


定義資料模型:

public class Subscriber {     @Size(min=2, max=30)     private String name;         @NotEmpty @Email    private String email;         @NotNull @Min(13) @Max(110)    private Integer age;         @Size(min=10)    private String phone;         @NotNull    private Gender gender;         @DateTimeFormat(pattern="MM/dd/yyyy")    @NotNull @Past    private Date birthday;     ...}


在控制器中用@Valid定義資料模型:

@Controllerpublic class FormController {         ...         @RequestMapping(value="form", method=RequestMethod.POST)    public String submitForm(@Valid Subscriber subscriber, BindingResult result, Model m) {        if(result.hasErrors()) {            return "formPage";        }                 m.addAttribute("message", "Successfully saved person: " + subscriber.toString());        return "formPage";    }}


在視圖中用<form:errors>顯示錯誤資訊:

<form:form action="/form" modelattribute="subscriber">    <label for="nameInput">Name: </label>    <form:input path="name" id="nameInput"></form:input>    <form:errors path="name" cssclass="error"></form:errors>    <br />         <label for="ageInput">Age: </label>    <form:input path="age" id="ageInput"></form:input>    <form:errors path="age" cssclass="error"></form:errors>    <br />         <label for="phoneInput">Phone: </label>    <form:input path="phone" id="phoneInput"></form:input>    <form:errors path="phone" cssclass="error"></form:errors>    <br />         <label for="emailInput">Email: </label>    <form:input path="email" id="emailInput"></form:input>    <form:errors path="email" cssclass="error"></form:errors>    <br />         <label for="birthdayInput">Birthday: </label>    <form:input path="birthday" id="birthdayInput" placeholder="MM/DD/YYYY">    <form:errors path="birthday" cssclass="error"></form:errors>    <br />         <label for="genderOptions">Gender: </label>    <form:select path="gender" id="genderOptions">        <form:option value="">Select Gender</form:option>        <form:option value="MALE">Male</form:option>        <form:option value="FEMALE">Female</form:option>    </form:select>    <form:errors path="gender" cssclass="error"></form:errors>    <br />         <label for="newsletterCheckbox">Newsletter? </label>    <form:checkbox path="receiveNewsletter" id="newsletterCheckbox"></form:checkbox>    <form:errors path="receiveNewsletter" cssclass="error"></form:errors>    <br /><br />    <input type="submit" value="Submit" /></form:input></form:form>



如何定義校正資訊?最簡單的方式是用message參數:

@Size(min=10, message="Phone number must be at least 10 characters")

但是這不能實現國際化文文書處理。用messageSource可以實現國際化文字:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">    <property name="basename" value="messages"/></bean>

然後在src/main/resources下建立messages.properties,用下面的格式覆蓋預設的校正資訊:

{ValidationClass}.{modelObjectName}.{field}

例如:

Size=the {0} field must be between {2} and {1} characters longSize.subscriber.name=Name must be between {2} and {1} charactersSize.subscriber.phone=Phone must be at least {2} characters Min.subscriber.age=You must be older than {1}Max.subscriber.age= Sorry, you have to be younger than {1} Email=Email address not validPast=Date must be in the past NotEmpty=Field cannot be left blankNotNull=Field cannot be left blank typeMismatch=Invalid formatmethodInvocation.myRequest.amount=Invalid format

注意下面這段話,說明了搜尋校正資訊的順序:

For example, if the age field of our “subscriber” model object fails the “NotNull” validation, the “NotNull.subscriber.age” message would be looked up. If the message isn’t found, “NotNull.subscriber” would be looked for. Finally, if not found, “NotNull” message would be looked for. If that also isn’t found, the default message (what we saw above) would be rendered. 


http://codetutr.com/2013/05/28/spring-mvc-form-validation/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.