2
我試圖顯示全名,以及主管和經理的複選框。這兩個複選框會被檢查,如果這個人的值是真的。無法綁定彈簧窗體複選框
我想要做的是顯示具有複選框的完整名稱和主管和經理列的用戶,這些選中或未選中,並且當表單提交時,更改也被綁定。我試過模型屬性,但沒有任何運氣。
這是我到目前爲止。
控制器
@Controller
@RequestMapping("/person.html")
public class PersonsController {
@Autowired
private PersonService personService;
@RequestMapping(method = RequestMethod.GET)
public String initForm(@ModelAttribute("personView")PersonView personView, BindingResult result, Model model) {
List<Person> persons= personService.getPersonList();
PersonView personData = new PersonView();
personView.setPersonList(persons);
model.addAttribute("personView", personData);
return "member";
}
@RequestMapping(method = RequestMethod.POST)
public String submitForm(Model model, PersonView personView, BindingResult result) {
System.out.println("Controller runs");
model.addAttribute("persons", personView);
return "successMember";
}
}
查看
public class PersonView {
private boolean isSupervisor;
private boolean isManager;
private List<Person> personList;
public boolean isSupervisor() {
return isSupervisor;
}
public void setSupervisor(boolean isSupervisor) {
this.isSupervisor = isSupervisor;
}
public boolean isManager() {
return isManager;
}
public void setManager(boolean isManager) {
this.isManager = isManager;
}
public List<Person> getPersonList() {
return personList;
}
public void setPersonList(List<Person> personList) {
this.personList = personList;
}
}
域
public class Person {
private String fullName;
private Boolean isSupervisor;
private Boolean isManager;
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public Boolean getIsSupervisor() {
return isSupervisor;
}
public void setIsSupervisor(Boolean isSupervisor) {
this.isSupervisor = isSupervisor;
}
public Boolean getIsManager() {
return isManager;
}
public void setIsManager(Boolean isManager) {
this.isManager = isManager;
}
}
JSP
<html>
<title>Persons Information</title>
</head>
<body>
<form:form method="POST" modelAttribute="personView">
<table>
<tr>
<th>Full Name</th>
<th>Supervisor</th>
<th>Manager</th>
</tr>
<c:forEach var="person" items="${personView.personList}"
varStatus="row">
<tr>
<td>{person.fullName}</td>
<td><form:checkbox path="isSupervisor"
value="${person.isSupervisor}" /></td>
<td><form:checkbox path="isManager"
value="${person.isManager}" /></td>
</tr>
</c:forEach>
<tr>
<td><input type="submit" name="submit" value="Submit">
</td>
</tr>
<tr>
</table>
</form:form>
</body>
</html>
任何建議
感謝您的回答。如何從控制器中的頁面獲取複選框的修改值? – jamesT
查看更新。在您的POST處理程序中將PersonView指定爲ModelAttribute,Spring將自動綁定提交的值。我顯然沒有把所有這些端到端運行起來,所以任何問題都讓我知道。 –
非常感謝。它正在工作。最後一個問題,如何才能更新修改後的值並檢查是否有修改,所以如果只是更新按鈕沒有任何修改就可以顯示錯誤信息。 – jamesT