gpt4 book ai didi

java - Spring MVC - 使用@ResponseBody 时设置 JAXB marshaller 属性

转载 作者:行者123 更新时间:2023-11-29 03:24:25 24 4
gpt4 key购买 nike

我正在尝试从我的 Controller 返回一个对象,该对象应该由 spring 解析为 xml。但是我用了 @XmlNamedObjectGraph (来自 moxy eclipselink)我类中的注释来自定义返回的对象。所以我必须从编码器中设置属性 MarshallerProperties.OBJECT_GRAPH。

我如何在我的 Controller 中访问 spring 用来解析我的对象的编码器?

即:

@RequestMapping(value = "/xml/", method = RequestMethod.GET, produces = "application/xml")
@ResponseBody
public ResponseEntity<Customer> getXml() {
Customer customer = _customerService.getById(12);
...
marshaller.setProperty(MarshallerProperties.OBJECT_GRAPH, "default");
...
return new ResponseEntity<>(customer, HttpStatus.OK);
}

提前感谢您的帮助。

最佳答案

正如 Sotirios Delimanolis 所说。您必须实现自己的 AbstractJaxb2HttpMessageConverter。但除此之外,您还实现了一个 WebBindingInitializer 并将其注册到:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="com.example.CommonWebBindingInitializer" />
</property>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />
<bean class="com.example.Jaxb2RootElementHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

关于java - Spring MVC - 使用@ResponseBody 时设置 JAXB marshaller 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21798952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com