Ich bekomme diesen Fehler, wenn ich mein Formular absende und kann nicht herausfinden, warum das passiert. Ich glaube, die Taglib sollte damit umgehen. Ich habe versucht, den Wert zu ändern, der in meinem jsp an itemValue="id"
übergeben wird, aber es hat keinen Einfluss.Nicht zu beheben: 'java.lang.String' zu erforderlichen Typ 'java.util.Collection'
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'content' on field 'stateCollection': rejected value [com.myapp.cmt.model.State[ id=3 ]]; codes [typeMismatch.content.stateCollection,typeMismatch.stateCollection,typeMismatch.java.util.Collection,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [content.stateCollection,stateCollection]; arguments []; default message [stateCollection]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Collection' for property 'stateCollection'; nested exception is java.lang.IllegalStateException:
Cannot convert value of type [java.lang.String] to required type [com.myapp.cmt.model.State] for property 'stateCollection[0]': no matching editors or conversion strategy found]
Mein jsp
<strong>State</strong><br/>
<form:checkboxes path="stateCollection" items="${states}" itemLabel="name"/>
Mein Inhalt
public class Content implements Serializable {
.......
@JoinTable(name = "content_to_state", joinColumns = {
@JoinColumn(name = "content_id", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "state_id", referencedColumnName = "id")})
@ManyToMany
private Collection<State> stateCollection;
.....
@XmlTransient
public Collection<State> getStateCollection() {
return stateCollection;
}
public void setStateCollection(Collection<State> stateCollection) {
this.stateCollection = stateCollection;
}
.....
mein Controller
...
@RequestMapping(value = "/{guid}/save", method = RequestMethod.POST)
public ModelAndView saveContent(@ModelAttribute("content") Content content, @PathVariable("guid") String guid) {
try {
// Save the modified object
contentService.save(content);
} catch (IllegalOrphanException ex) {
...
Mein Content-Service
...
@Transactional
public void save(Content content) throws IllegalOrphanException, NonexistentEntityException, RollbackFailureException, Exception {
try {
utx.begin();
em.merge(content);
utx.commit();
} catch (Exception ex) {
} finally {
if (em != null) {
em.close();
}
}
}
...