3

コードでエラーが発生する

java.lang.IllegalStateException: 引数 [0][type=org.jopenclass.form.Course] に適したリゾルバがありません

JSON 応答を ajax 呼び出しに送信します。オブジェクトを永続化するために休止状態を使用します。

    @RequestMapping(value = "/savecourse", method = RequestMethod.POST)
public @ResponseBody
Object saveLecturer(@Valid @ModelAttribute(value = "course") Course course,
        BindingResult result) {

    Map<String, Object> response = new HashMap<String, Object>();

    if (result.hasErrors()) {
        List<ObjectError> results = result.getAllErrors();
        for (ObjectError objectError : results) {
            System.out.println(objectError.getDefaultMessage());
        }
        response.put("message", "Could not add the Course to the system.");
    } else {
        try {
            course.setId(courseDao.saveCourse(course));//returns the id
            response.put("course", course);

        } catch (Exception e) {
            System.out.println(e);

        }
    }

    return response;
}

しかし、新しいオブジェクトを作成してパラメーターを他のオブジェクトにコピーすると、正常に動作します。2番目の方法(もちろん良い方法ではありません)はうまくいきます。request オブジェクトのすべてのパラメータも cse オブジェクトに設定されます。

    @RequestMapping(value = "/savecourse", method = RequestMethod.POST)
public @ResponseBody
Object saveLecturer(@Valid @ModelAttribute(value = "course") Course course,
        BindingResult result) {

    Map<String, Object> response = new HashMap<String, Object>();

    if (result.hasErrors()) {
        List<ObjectError> results = result.getAllErrors();
        for (ObjectError objectError : results) {
            System.out.println(objectError.getDefaultMessage());
        }
        response.put("message", "Could not add the Course to the system.");
    } else {
        try {
            course.setId(courseDao.saveCourse(course));//returns the id
            Course cse = new Course();
            cse.setId(course.getId());
            cse.setCourseName(course.getCourseName());
            cse.setFee(course.getFee());
            Lecturer lec = new Lecturer();
            lec.setId(course.getLecturer().getId());
            lec.setFirstName(course.getLecturer().getFirstName());
            lec.setLastName(course.getLecturer().getLastName());
            cse.setLecturer(lec);
            cse.setGrade(course.getGrade());
            response.put("course", cse);

        } catch (Exception e) {
            System.out.println(e);

        }
    }

    return response;
}

最初の方法で何が間違っていますか?

4

1 に答える 1

0

最初のケースでは、ジャクソンはあなたの応答を逆シリアル化することができません。Map<String, ? extends object> 返品タイプを「問題が解決しない場合はお知らせください」に変更することをお勧めします

于 2012-11-11T08:31:38.247 に答える