[未能将类型为';java.lang.String[]和';的属性值转换为属性的必需类型';java.util.List'
我正在使用Thymeleaf并尝试进行一些对象绑定,但是如果我有一个带有列表的对象,我不知道如何进行绑定。让我解释一下: 我的模型:[未能将类型为';java.lang.String[]和';的属性值转换为属性的必需类型';java.util.List',java,spring,spring-mvc,thymeleaf,Java,Spring,Spring Mvc,Thymeleaf,我正在使用Thymeleaf并尝试进行一些对象绑定,但是如果我有一个带有列表的对象,我不知道如何进行绑定。让我解释一下: 我的模型: @Entity public class Project { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull private String name; @NotNull @Lob
@Entity
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
private String name;
@NotNull
@Lob
private String description;
@NotNull
private Date startDate;
private String status;
@ManyToMany
private List<Role> rolesNeeded;
@ManyToMany
private List<Collaborator> collaborators;
public Project() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<Role> getRolesNeeded() {
return rolesNeeded;
}
public void setRolesNeeded(List<Role> rolesNeeded) {
this.rolesNeeded = rolesNeeded;
}
public List<Collaborator> getCollaborators() {
return collaborators;
}
public void setCollaborators(List<Collaborator> collaborators) {
this.collaborators = collaborators;
}
}
@实体
公共类项目{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@NotNull
私有字符串名称;
@NotNull
@高球
私有字符串描述;
@NotNull
私人日期开始日期;
私有字符串状态;
@许多
需要私人列表角色;
@许多
私人名单合作者;
公共工程(){
}
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getDescription(){
返回说明;
}
公共void集合描述(字符串描述){
this.description=描述;
}
公共字符串getStatus(){
返回状态;
}
公共无效设置状态(字符串状态){
这个状态=状态;
}
公共列表GetRolesRequired(){
需要返回角色;
}
public void setRolesNeeded(列表rolesNeeded){
this.rolesNeeded=rolesNeeded;
}
公共列表getCollaborators(){
返回合作者;
}
公共协作者(列出协作者){
this.collaborators=协作者;
}
}
我的html表单:
项目名称:
项目说明:
项目状态:
活跃的
存档
没有开始
项目角色:
-
开发商
我得到了一个错误:
错误!!!!:字段“RolesRequired”上的对象“project”中的字段错误:
拒绝值
[com.impender.instateam.model。Role@145d6cd4,com.impender.instateam.model。Role@73020d6f];
代码
[typeMismatch.project.RolesRequired,typeMismatch.RolesRequired,typeMismatch.java.util.List,typeMismatch];
论据
[org.springframework.context.support.DefaultMessageSourceResolvable:
代码[project.rolesNeeded,rolesNeeded];参数[];默认消息
[RolesRequired]];默认消息[无法转换的属性值]
将“java.lang.String[]”键入所需的“java.util.List”类型
属性“RolesRequired”;嵌套异常为
java.lang.IllegalStateException:无法转换类型的值
“java.lang.String”转换为所需类型
属性“rolesNeeded[0]”的“com.impender.instateam.model.Role”:否
找到匹配的编辑器或转换策略]
基本上,据我所知,复选框输入返回一个字符串[],但我的对象需要一个列表,因此无法执行绑定
如何绑定列表中的数组?(您有示例吗?)
谢谢。如果您的
角色
bean具有活动
布尔属性,您可以执行以下操作(简化):
-
开发商
如果没有,您可以将
rolesNeeded
存储在隐藏字段中,并用javascript填充它们。如果您的角色
bean具有活动
布尔属性,您可以这样做(简化):
-
开发商
如果没有,您可以将rolesNeeded
存储在隐藏字段中,并用javascript填充它们
<ul class="checkbox-list">
<li th:each="role,stat : ${project.rolesNeeded}">
<input th:field="*{rolesNeeded[__${stat.index}__].active}" type="checkbox"/>
<input th:field="*{rolesNeeded[__${stat.index}__].name}" type="hidden"/>
<span class="primary" th:text="${role.name}">Developer</span>
</li>
</ul>