【问题标题】:How to determine if a certain property is invalid using the Spring MVC taglibs?如何使用 Spring MVC 标签库确定某个属性是否无效?
【发布时间】:2012-11-09 19:28:44
【问题描述】:

我使用 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 表单标记库来呈现表单。

<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>

我想向div.control-group 添加一个 CSS 类。这可以使用 Spring MVC 表单标记库吗?如何确定某个 bean 的属性在视图中是否无效?

【问题讨论】:

    标签: spring spring-mvc jsp-tags bean-validation


    【解决方案1】:

    解决方案是使用 Spring bind 标签。您可以通过${status}查看绑定状态,也可以通过${status.error}查询是否有错误。这将导致以下 sn-p:

    <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>
    

    【讨论】:

      猜你喜欢
      • 2013-08-11
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多