我有一个 CRUD,我想要更改输入文本区:
<p:inputTextarea id="tags" value="#{myController.selected.tags}" />
针对新的Primefaces chips 组件:
<p:chips id="tags" value="#{myController.selected.tags}" />
一个实体类摘录:
@Lob
@Size(max = 2147483647)
@Column(name = "tags")
private String tags;
//GETTER AND SETTER OMITTED
get方法运行良好,因为标签按预期在字段中显示:
public List<String> getTags() {
return Arrays.asList(tags.split(","));
}
但是 set 方法不行,因为当我点击保存时,会出现异常:
public void setTags(List<String> tags) {
this.tags = String.join(",", tags);
}
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.CharSequence
at org.hibernate.validator.internal.constraintvalidators.SizeValidatorForCharSequence.isValid(SizeValidatorForCharSequence.java:33)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:281)
请问有人可以帮我吗?
提前致谢。
附:我已经向Primefaces团队(https://forum.primefaces.org/viewtopic.php?f=3&t=51091)和Primefaces核心开发者(Thomas Andraschko)提出问题,他们建议我向Hibernate验证器团队询问。
public List<String> getTagsColabList() { if (tagsColab==null) { tagsColab = ""; } return Arrays.asList(tagsColab.split(",")); }
- jMarcel