Java: Spring Rest WS - невозможно найти объект для маршалинга в модели - PullRequest
2 голосов
/ 17 января 2011

Получение исключения при попытке запустить rest ws весной mvc 3.0 с jaxb

javax.servlet.ServletException: Невозможно найти объект для маршалинга в модели: {org.springframework.validation.BindingResult.employees = org.springframework.validation.BeanPropertyBindingResult: 0 ошибок, employee=spring3.rest.bean.EmployeeList@13d1402 Event

В моем файле rest-servlet.xml есть запись jaxb, как следует

<bean id="employees" class="org.springframework.web.servlet.view.xml.MarshallingView">
 <constructor-arg ref="jaxbMarshaller" />
</bean>

и

 <bean id="employeeController" class="spring3.rest.controller.EmployeeController">
  <property name="employeeDS" ref="employeeDS" /> 
  <property name="jaxb2Mashaller" ref="jaxbMarshaller" />
 </bean>

EmployeeController:

@Controller
public class EmployeeController {

private EmployeeDS employeeDS;

public void setEmployeeDS(EmployeeDS ds) {
    this.employeeDS = ds;
}

private Jaxb2Marshaller jaxb2Mashaller;

public void setJaxb2Mashaller(Jaxb2Marshaller jaxb2Mashaller) {
    this.jaxb2Mashaller = jaxb2Mashaller;
}

@RequestMapping(method=RequestMethod.GET, value="/employee/{id}")
public ModelAndView getEmployee(@PathVariable String id) {
    Employee e = employeeDS.get(Long.parseLong(id));
    return new ModelAndView("employees", "object", e);
}

В rest-servlet.xml

spring3.rest.bean.EmployeeList spring3.rest.bean.Employee

и оба этих боба помечены @ XmlRootElement

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

Обнаружена похожая проблема, получается, что в моем случае я возвращал List (A), в то время как сам тип 'A' объявлен как @XmlRootElement, я упускал из виду тот факт, что я возвращал List типа A, имел объект-оболочку определен для хранения списка, и он был объявлен как @XMLRoolElement, способный двигаться вперед.

думал, что пост старый, может быть полезно знать.

0 голосов
/ 14 мая 2014

Вам необходимо поместить объект ответа в модель

@RequestMapping(value = "/myPath", method = RequestMethod.GET)
public @ResponseBody
MyObjct getMyObject(ModelMap model) {
    MyObjct t = new MyObjct();
    model.addAttribute(t); // put into model
    return t;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...