我有以下代码。
它从数据库检索listplaces并绑定到视图。
很好用。
然后我想更新视图上的数据,单击save并将该信息提交回控制器,以便控制器使用更改更新db。
但是当我单击save时,代码并没有进入saveplaces方法。
而是抛出以下错误: No primary or default constructor found for interface java.util.List
在saveplaces方法中检索list对象需要更改什么?
实体类
@Entity
public class Place implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long idPlace;
@Column(length=50)
private String place;
public Long getIdPlace() {
return idPlace;
}
public void setIdPlace(Long idPlace) {
this.idPlace = idPlace;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
}
控制器获取方法
@RequestMapping(method = RequestMethod.GET, value = "/myplaces")
public ModelAndView initPlaces() {
List<Place> listPlaces = placesRepository.getPlaces();
ModelAndView modelAndView = new ModelAndView("/myplaces.html");
modelAndView.addObject("listPlaces", listPlaces);
return modelAndView;
}
看法
<form action="/myplaces" method="post">
<th:block th:each="place, itemStat : *{listPlaces}">
<input type="text" th:value="*{listPlaces[__${itemStat.index}__].place}" />
</th:block>
<input type="submit" name="btnSave" value="Save"/>
在btnsave click上执行的控制器保存方法
@RequestMapping(value = "/myplaces", params = "btnSave", method = RequestMethod.POST)
public ModelAndView savePlaces(@ModelAttribute List<Place> listPlaces) {
//update db code here
ModelAndView modelAndView = new ModelAndView("/myplaces.html");
modelAndView.addObject("listPlaces", listPlaces);
return modelAndView;
}
1条答案
按热度按时间ttisahbt1#
使用实现
List
,例如ArrayList
或者LinkedList
,具有默认构造函数。@ModelAttribute("listPlaces") ArrayList<Place> listPlaces
关于如何在spring中使用列表作为模型属性的更多信息?