SearchController
package com.example.controller;
import java.util.ArrayList;
import java.util.List;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.example.dto.ErrorDto;
import com.example.dto.MemberDto;
import com.example.dto.SearchResultDto;
import com.example.form.SearchForm;
@Controller
public class SearchController {
@RequestMapping(value="/", method=RequestMethod.GET)
public String index(Model model) {
model.addAttribute("searchForm", new SearchForm());
return "index";
}
@RequestMapping(value="/search", method=RequestMethod.GET)
@ResponseBody
public SearchResultDto search(@Valid @ModelAttribute SearchForm searchForm, BindingResult result) {
SearchResultDto results = new SearchResultDto();
if ( result.hasErrors() ) {
results.setState("1"); //error
List<ErrorDto> errors = new ArrayList<>();
List<FieldError> origErrors = result.getFieldErrors();
for ( FieldError e : origErrors) {
errors.add(new ErrorDto(e.getField(), e.getDefaultMessage()));
}
results.setErrors(errors);
System.out.println(errors.size());
} else {
results.setState("0"); //success
List<MemberDto> members = new ArrayList<>();
members.add(new MemberDto("名前1","部署1", 11));
members.add(new MemberDto("名前2","部署2", 22));
members.add(new MemberDto("名前3","部署3", 33));
results.setMembers(members);
}
return results;
}
}
SearchResultDto
package com.example.dto;
import java.util.ArrayList;
import java.util.List;
public class SearchResultDto {
private String state;
private List<ErrorDto> errors = new ArrayList<>();
private List<MemberDto> members = new ArrayList<>();
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public List<ErrorDto> getErrors() {
return errors;
}
public void setErrors(List<ErrorDto> errors) {
this.errors = errors;
}
public List<MemberDto> getMembers() {
return members;
}
public void setMembers(List<MemberDto> members) {
this.members = members;
}
}
package com.example.dto;
public class MemberDto {
private String name;
private String dept;
private int age;
public MemberDto(String name, String dept, int age) {
this.name = name;
this.dept = dept;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
SearchForm
package com.example.form;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import org.hibernate.validator.constraints.NotBlank;
public class SearchForm {
@NotBlank
private String name;
@DecimalMin("10")
@DecimalMax("99")
private Integer age;
public Integer getAge() {
return age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
}