1

请参阅我的以下 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使其工作?

4

1 回答 1

4

不生成 XML 的两个示例不起作用,因为您的模型中有多个顶级对象。XML 无法表示 - 您需要一个模型对象,然后可以将其转换为 XML。类似地,Spring MVC 无法将裸列表转换为 XML。

在这两种情况下,您都需要将各种模型对象包装到一个根对象中,并将其添加到模型中。

另一方面,JSON 在单个文档中表示多个顶级对象没有问题。

于 2011-06-23T06:58:20.127 回答