Java spring mvc: IllegalStateException: Cannot convert value of type [java.lang.Zeichenfolge], um den gewünschten Typ

Wie der Titel sagt ich habe ein nerviges IllegalStateException in meine Feder web-app.
Ich habe durch zahlreiche Themen hier auf SO und in anderen Foren, ohne Glück.

Tritt der Fehler auf wenn ich versuche zu bestehen und Note (mit einem Ordner) in meiner DB.

Hier mein controller;

@InitBinder
public void initBinder(WebDataBinder binder){
binder.registerCustomEditor(Folder.class, new FolderEditor());
}

@RequestMapping(value="/notes")
public @ResponseBody List<Note> postNote(@RequestParam("folder") String folderName,                          
@ModelAttribute(value="note")Note note,  BindingResult result){

    folderName = folderName.replaceAll("\\s+","");
    Folder folder = folderService.getFolderByName(folderName);

    noteService.insertNote(note, folder);

    if(result.hasErrors()){
        System.out.println(result.getFieldError());
}

return noteService.getNotes();

}

Hier mein NoteServiceImpl;

public String insertNote(Note note, Folder folder) {

    EntityManager em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    tx.begin();

    note.setFolder(folder);
    em.merge(note); //i've used merge *and* persist
            //this is where it goes wrong!

    tx.commit();
    em.close();

    return "Succes!";
}

Hier mein Hinweis;

@Entity
@Table(name="note")
public class Note implements Serializable {

@Id @GeneratedValue
private long id;

private String header;
private String text;

@ManyToOne
private Folder folder;

    //+ getters and setters
}

Hier ist mein Ordner;

@Entity
public class Folder implements Serializable {
@Id @GeneratedValue
private long id;

private String name;

@OneToMany
private List<Note> notes;

@ManyToOne
private User user;

//+ getters and setters

}

Fehler;

Field error in object 'note' on field 'folder': 
rejected value [ public]; codes [typeMismatch.note.folder,typeMismatch.folder,typeMismatch.com.minimalito.model.Folder,typeMismatch]; 
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: 
codes [note.folder,folder]; arguments []; default message [folder]]; 
default message [Failed to convert property value of type 'java.lang.String' to required type 'com.minimalito.model.Folder' for property 'folder'; 
nested exception is java.lang.IllegalStateException: 
Cannot convert value of type [java.lang.String] to required type [com.minimalito.model.Folder] for property 'folder': no matching editors or conversion strategy found]

Alles war in Ordnung arbeiten, bis ich versuchte, zu bestehen und Note (mit Ordner) in meiner DB.
Ich bin aus Optionen hier, erkennt jemand das problem?

Sorry Leute, für nicht einschließlich der Fehler, entscheidende information 🙂
Ich habe bearbeitet meine NoteServiceImpl Klasse, jetzt kann man sehen, wo es schief geht.

Einige mögliche Lösungen, die ich gefunden habe, bestehen aus über einen 'converter' Klasse', konvertieren Sie die Zeichenfolge in einen Ordner. Also ich habe das ausprobiert, aber ich bin irgendwie hängen geblieben, habe ich eine Converter-Klasse, wie so;

public final class StringToFolder implements Converter<String, Folder> {

@Autowired
FolderServiceImpl folderServiceImpl;

public Folder convert(String source){
    Folder f = folderServiceImpl.getFolderByName(source);

    return f;
}
}

Und die config-Datei;

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean id="StringToFolderConverter" class="com.minimalito.converter.StringToFolder" />
        </list>
    </property>
</bean>

Aber ich weiß wirklich nicht, wo genau ich diese...denn soweit ich weiß, ich bin nie übergeben einen String, wo ich sein sollte die übergabe eines Ordners. Ich

welche Zeile wird dieser Fehler angezeigt? Kannst du die Fehler-stack?
Kannst du den stacktrace? Das wird den Menschen ermöglichen, um Sie schneller und besser
Ja, ich bin damit einverstanden sollte Hinzugefügt haben, dass in den ersten Platz. Bearbeitet meine post.
Haben Sie registriert die StringToFolder Konverter in der Spring-config?
Hast du einen Konverter für die note?

InformationsquelleAutor Jack | 2014-01-13

Schreibe einen Kommentar