구성을 통해서만 얻을 수 있습니다. 특별한 것을 프로그램 할 필요가 없습니다. 여기 방법입니다 : 먼저 구성 권한을 설정, 내가 잭슨 + JAXB를 사용 모두에 ContentNegotiatingViewResolver 빈에서 설정 :
마샬에서 나는 OXM 설정 사항 것을
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1"/>
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<oxm:jaxb2-marshaller id="marshaller">
<oxm:class-to-be-bound name="com.shay.dashboard.data.structure.page.PageObject" />
<oxm:class-to-be-bound name="com.shay.dashboard.data.structure.tab.TabObject" />
<oxm:class-to-be-bound name="com.shay.dashboard.data.structure.section.SectionObject" />
<oxm:class-to-be-bound name="com.shay.dashboard.data.structure.element.nonembedded.ElementObject"/>
<oxm:class-to-be-bound name="com.shay.dashboard.data.structure.element.embedded.EmbeddedElementObject"/>
<oxm:class-to-be-bound name="com.shay.dashboard.data.structure.chart.common.ChartManager"/>
</oxm:jaxb2-marshaller>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
</list>
</property>
</bean>
: 클래스 - 투 - 바인딩을 - 그 JAXB에 의해 바인딩되는 클래스입니다.
이제 모듈에 대해 비 marshaller 관련 일반 주석 패키지 (javax.xml.bind.annotation)를 사용했습니다. Jackson Json과 JAXB는 모두 그것을 읽는 법을 알고 있습니다. 예를 들어
: 당신이 얻을 것 확장자가 .json URL을 호출하는 동안 지금
@RequestMapping(value="/get_page", method = RequestMethod.GET)
public ModelAndView initPage()
{
ModelAndView mav = null;
try
{
PageObject myPage = (PageObject) Utilities.getUtilities().loadObjectFromFile(XmlComponentType.page);
mav = new ModelAndView("page","page",myPage);
}
catch (Exception e)
{
e.getMessage();
}
return mav;
}
: 마지막으로 당신의 MVC의 컨트롤러는 모델과 뷰를 반환해야
@XmlAccessorType(XmlAccessType.NONE) @XmlRootElement(name="page") public class PageObject implements ComponentTypeObject{ @XmlAttribute(name="name") private String name; @XmlAttribute(name="id",required=true) private String id;
@XmlElements({@XmlElement(name="tab", type=TabXmlAdapter.class)}) private List<TabXmlAdapter> tabRef;
JSON 표현 및 .xml - 및 XML. 모듈에 주석을 달 때 올바른 매핑을 제공했다면 두 가지 모두 뷰어에 의해 변환됩니다.
디스패치에 spring-web 또는 spring-mvc를 사용하는 경우 솔루션이 작동합니다. RESTEasy를 사용하고 있습니다. 감사. – Kamlesh
아, 통지하지 않았다, 너무 대답했다 :) – jazzcool