java - 使用 spring 3 注释发送成功或错误消息以查看

标签 java jsp annotations jstl spring-3

我有一个jsp页面,如下所示:

<form:form action="userRegistration" name="userRegistrationForm" commandName="userRegistration">

<form:input path="userName"/>
<form:input path="houseNo"/>

</form:form>

以及所有必填字段。

在 Controller 中我这样使用:

@RequestMapping(method=RequestMethod.GET)
public String registration(ModelMap model,HttpSession session) {
    UserRegistration userRegistration = service.createUserRegistration();
    model.addAttribute("userRegistration",userRegistration);
    return "registrationview";
}


@RequestMapping(method=RequestMethod.POST)
public String getRegistration(UserRegistration userRegistration, HttpSession session, ModelMap model) {
    boolean result = validateAndSaveData(userRegistration);
    if (result){

    }
}

当用户提交表单时,它会转到帖子,然后验证输入并保存。 如何向 View 发送成功消息和错误消息。现有的实现是否需要进行任何更改?

最佳答案

@RequestMapping(method=RequestMethod.POST)
public String getRegistration(UserRegistration userRegistration, HttpSession session, ModelMap model) {
    boolean result = validateAndSaveData(userRegistration);
    if (result){
        model.addAttribute("successMsg", "Form successfully submitted");
        return "successPage";
    }
    else {
        model.addAttribute("errorMsg", "Your form submission contains errors.");
        return "formPage";  
    }
}

我同意 Shagaan 的观点,您应该考虑使用 Spring 对 JSR-303 验证的内置支持来验证表单。以下是有关如何执行此操作的一些信息。首先,使用 JSR-303 (javax.validation) 注释来注释您的表单:

public class UserRegistration {

    @NotNull
    @Size(max=7)
    private String name;
    @Min(0)
    private int houseNo;
    ...
}

然后在 Controller 方法中使用“@Valid”注释您的模型:

@RequestMapping(method=RequestMethod.POST)
public String getRegistration(@Valid UserRegistration userRegistration, BindingResult result, HttpSession session, ModelMap model) {
    if (result.hasErrors()){
        model.addAttribute("errorMsg", "Your form submission contains errors.");
        return "formPage"; 
    }

    model.addAttribute("successMsg", "Form successfully submitted");
    return "successPage";
}

Spring 的 BindingResult 自动将错误绑定(bind)到您的表单对象,因此在您的 jsp 中,您可以执行以下操作:

<form:form action="userRegistration" name="userRegistrationForm" commandName="userRegistration">

    <form:input path="userName"/> <form:errors path="userName" cssClass="error"/>
    <form:input path="houseNo"/>  <form:errors path="houseNo" cssClass="error"/>

</form:form>

要使用 Spring 验证,您需要在类路径中添加 Validation-api(JSR-303 规范)和实现(Hibernate-Validator)。请参阅 Spring validation docs 的第 6.7 节

关于java - 使用 spring 3 注释发送成功或错误消息以查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10090262/

相关文章:

java - 使用 swing 组件打印 JTable 和 JLabel?

java - 如何用 spring batch 解析 json 文件?

java - jsp - 未正确使用 JSTL 的错误

java - 在 getNode 方法之前检查链表是否不为空

java - @OneToOne(optional=false) 和@JoinColumn(nullable=false) 一起使用

java - 如何创建 Spring Boot 中外部 jar 上存在的类的对象?

java - 您应该如何处理 Java 中的 MongoDB 异常?

java - 使用 JDBC-ODBC 驱动程序建立数据库连接需要哪些软件或驱动程序?

java - Glassfish JDBCRealm 登录异常

python - -> 在 Python 函数定义中是什么意思?