2

JSR 303 を使用して、アプリケーションに送信されるデータを検証します。私はコントローラーを持っています

@Controller
@RequestMapping("/users")
public class UserController {

    private UserService userService;

    @RequestMapping(value = "/users", method = GET)
    public String index(Model model) {
        // ...
        return "users.index";
    }

    @RequestMapping(value = "/users/create", method = POST)
    public String create(@Valid @ModelAttribute("userForm") UserForm userForm, BindingResult bindingResult, Model model) {
        if (bindingResult.hasErrors()) {
            return "users.form";
        }
        userService.addUser(userForm);
        return "redirect:users";
    }   
}

UserFormクラス_

public class UserForm {   
    private String email;

    // ...

    @Email
    public String getEmail() { return email; }

    // ...
}

そして最後にusers.form.jsp、Spring フォーム taglib を使用してフォームをレンダリングする .

<form:form action="users" method="post" commandName="userForm">
    <fieldset>
        <legend>Create User</legend>

        <div class="control-group">
            <form:label path="email">Email</form:label>
            <div class="controls">
                <form:input path="email"/>
                <form:errors path="email" cssClass="help-inline" />
            </div>
        </div>

        <%-- More Fields, Buttons --%>
    </fieldset>
</form:form>

に CSS クラスを追加したいdiv.control-group。これは、Spring MVC フォーム taglib を使用して可能ですか? ビューで Bean のプロパティが無効かどうかを判断するにはどうすればよいですか?

4

1 に答える 1

1

解決策は、Springbindタグを使用することです。を介してバインディング ステータスにアクセスし、 を介し${status}てエラーが発生したかどうかを照会できます${status.error}。これにより、次のスニペットが生成されます。

<form:form action="users" method="post" commandName="userForm">
    <fieldset>
        <legend>Create User</legend>

        <spring:bind path="email">
            <c:if test="${status.error}"><c:set var="classes">error</c:set></c:if>
            <div class="control-group ${classes}">
                <form:label path="email">Email</form:label>
                <div class="controls">
                    <form:input path="email"/>
                    <form:errors path="email" cssClass="help-inline" />
                </div>
            </div>
        </spring:bind>

        <%-- More Fields, Buttons --%>
    </fieldset>
</form:form>
于 2012-11-10T11:55:10.367 に答える