【问题标题】:sending success or error message to view with spring 3 annotations使用 spring 3 注释发送成功或错误消息以查看
【发布时间】:2012-04-22 19:59:04
【问题描述】:

我有一个这样的jsp页面:

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

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

</form:form>

以及所有必填字段。

在控制器中我这样使用:

@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){

    }
}

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

【问题讨论】:

    标签: java jsp annotations jstl spring-3


    【解决方案1】:

    可以在请求中保存:model.addAttribute("message","sussess");

    【讨论】:

      【解决方案2】:
      @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;
          ...
      }
      

      然后在控制器方法中用“@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 自动将错误绑定到您的表单对象,因此在您的 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 节

      【讨论】:

      • 这些消息在使用后会被删除吗?
      • spring 是否有同样的成功信息?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多