2011-06-22 3 views
1

次の4つの簡単な例を参照してください。xmlの場合は2つ、もう1つの場合は2つです。 XMLを生成することができない2つの例でspring mvcでxmlを発行する3

//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; 

      } 

、それはそれを動作させるために春を構成するために可能ですか?

答えて

4

モデルに複数のトップレベルオブジェクトがあるため、XMLを生成しない2つの例は機能しません。 XMLにはこれを表現する方法がありません。単一のモデルオブジェクトをXMLに変換する必要があります。同様に、裸のリストはSpring MVCによってXMLに変換できません。

どちらの場合でも、さまざまなモデルオブジェクトを1つのルートオブジェクトにラップしてモデルに追加する必要があります。

JSONは、1つのドキュメント内に複数のトップレベルオブジェクトを表示することに問題はありません。

+0

これも私が考えたものです。だからあなたの提案は何ですか?私はこれらのさまざまなモデルオブジェクトを保持するために新しいjaxb beanを作成しなければならないと思います。作成するBeanの数について考えると苦労します。また、htmlやjsonといった製品のメソッドでやってみることをお勧めしますか?どうもありがとう! – Bobo

関連する問題