проблемы с XML весной MVC 3 - PullRequest
1 голос
/ 23 июня 2011

Смотрите мои следующие 4 простых примера, 2 работает для xml, 2 других - нет.

//works for html, json, xml
     @RequestMapping(value = "/test", method = RequestMethod.GET)
            public ModelAndView testContentNegiotation(HttpServletRequest request, HttpServletResponse response) {

                ModelAndView mav = new ModelAndView();

                    TestTO test =  new TestTO("some msg", -888);
                    mav.addObject("test", test);

                    mav.setViewName("test"); //test is a jsp page

                return mav;
            }

//does not work for xml
     @RequestMapping(value = "/test", method = RequestMethod.GET)
            public ModelAndView testContentNegiotation(HttpServletRequest request, HttpServletResponse response) {

                ModelAndView mav = new ModelAndView();

                    ErrorTO error =  new ErrorTO("some error", -111);
                    mav.addObject("error",error );

                    TestTO test =  new TestTO("some msg", -888);
                    mav.addObject("test", test);

                    mav.setViewName("test");

                return mav;
            }

         //works for xml and json   
@RequestMapping(value = "/test3", method = RequestMethod.GET)
    public @ResponseBody ErrorTO test3(HttpServletRequest request, HttpServletResponse response) {

        ErrorTO error = new ErrorTO();
        error.setCode(-12345);
        error.setMessage("this is a test error.");
        return error;
    }

//does not work for xml
            @RequestMapping(value = "/testlist", method = RequestMethod.GET)
            public @ResponseBody List<ErrorTO> testList2(HttpServletRequest request, HttpServletResponse response) {

                    ErrorTO error =  new ErrorTO("an error", 1);
                    ErrorTO error2 =  new ErrorTO("another error", 2);
                    ArrayList<ErrorTO> list = new ArrayList<ErrorTO>();
                    list.add(error);
                    list.add(error2);
                    return list;

            }

В двух примерах, которые не могут создать xml, возможно ли настроить Spring, чтобы он работал?

1 Ответ

4 голосов
/ 23 июня 2011

Два примера, которые не генерируют XML, не работают, потому что у вас есть несколько объектов верхнего уровня в вашей модели. XML не может это представить - вам нужен один объект модели, который затем можно преобразовать в XML. Точно так же Spring MVC не может преобразовать пустой список в XML.

В обоих случаях вам нужно обернуть различные объекты модели в один корневой объект и добавить его в модель.

JSON, с другой стороны, не имеет проблем с представлением нескольких объектов верхнего уровня в одном документе.

...