Spring MVC form:inputタグを使うサンプル

環境
Spring 5.2.22
Eclipse 4.24.0

説明
form:inputタグ
テキストの入力フィールドを作成するタグです。属性は標準的なものに加えて以下のものがあります。基本的にはHTML標準の属性です。
autocomplete HTML標準のautocomplete属性
maxlength HTML標準のmaxlength属性
readonly HTML標準のreadonly属性
size HTML標準のsize属性

操作方法
1.画面表示用モデルを作成します(InputModel.java)

public class InputModel { //クラスInputModelの定義
    private String name; //名前
      
    @Min(1)
    @Max(100)
    private Integer age; //年齢
}

ModelはStringとIntegerの2つの項目です。ageにはBean Validatorのアノテーションを設定し、1〜100までの値のみ入力可能としています。

2.コントローラは以下のようになります。

@Controller
public class FormController {

    @ModelAttribute("inputModel")
    public InputModel initInputModel() { //メソッドをつける
        return new InputModel();
    }

   /*input メソッドを設定*/
    @RequestMapping(value = "/input", method = RequestMethod.GET)
    public String input(Model model) {
        InputModel imd = new InputModel();
        imd.setName("山田 太郎");
        model.addAttribute("inputModel", imd);

        return "input";
    }

    @RequestMapping(value = "/reg", method = RequestMethod.POST)
    public String reg(
            @Valid @ModelAttribute("inputModel") InputModel inputModel,
            Errors errors) {
        if (errors.hasErrors()) {
            return "input";
        }

        return "forward:/";
    }
}

3.JSPはValidationのエラー表示用のform:errorタグを追加しています。
サンプルコード

<form:form modelAttribute="inputModel" action="reg" method="post">
 <form:errors path="*" element="div" />
 <form:label path="name">名前:</form:label><form:input path="name" size="40" /><br>
 <form:label path="age">年齢:</form:label><form:input path="age" size="5" cssErrorClass="error" /><br>
 <input type="submit" value="送信">
</form:form>

 

SpringMVC

Posted by arkgame