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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10090262/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 23:34:26  来源:igfitidea点击:

sending success or error message to view with spring 3 annotations

javajspannotationsjstlspring-3

提问by coder247

I've a jsp page which is like this:

我有一个像这样的jsp页面:

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

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

</form:form>

and all the required fields.

以及所有必填字段。

In controller I use like this:

在控制器中,我是这样使用的:

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

    }
}

when the user submits the form, it comes to the post and then validates the input and saves it. How can I send a succes message and error message to the view. Is there any changes required in the existing implementation ?

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

回答by stephen.hanson

@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";  
    }
}

I agree with Shagaan that you should look into using Spring's built-in support for JSR-303 validation to validate the form. Here's a little info on how to do that. First, annotate your form with JSR-303 (javax.validation) annotations:

我同意 Shagaan 的观点,您应该考虑使用 Spring 对 JSR-303 验证的内置支持来验证表单。这里有一些关于如何做到这一点的信息。首先,使用 JSR-303 (javax.validation) 注释来注释您的表单:

public class UserRegistration {

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

Then annotate your model in the controller method with "@Valid":

然后使用“@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's BindingResult automatically binds the errors to your form object, so then in your jsp, you could do:

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>

To use Spring validation, you need Validation-api (JSR-303 spec) and an implementation (Hibernate-Validator) in your classpath. See Section 6.7 of Spring validation docs

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

回答by Jelly

You can save in request :model.addAttribute("message","sussess");

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