2

次のような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){

    }
}

ユーザーがフォームを送信すると、フォームが投稿され、入力が検証されて保存されます。成功メッセージとエラー メッセージをビューに送信するにはどうすればよいですか。既存の実装に必要な変更はありますか?

4

2 に答える 2

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

Spring のビルトイン JSR-303 検証サポートを使用してフォームを検証する必要があるという Shagaan に同意します。これを行う方法について少し説明します。まず、フォームに 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 検証ドキュメントのセクション 6.7 を参照してください。

于 2012-04-10T16:22:03.467 に答える
1

リクエストで保存できます :model.addAttribute("message","sussess");

于 2012-04-10T14:31:41.257 に答える