当我使用MarshallingView封送FileManagement对象的列表(java.util.List)时出现此错误。如果仅在模型中添加一个对象,则不会发生这种情况。因此,它只适用于对象,而不适用于集合(列表)。
例外情况 :
javax.servlet.ServletException: Model object [[com.afirme.filemanagement.domain.FileManagement@69c, com.afirme.filemanagement.domain.FileManagement@65f, com.afirme.filemanagement.domain.FileManagement@661, com.afirme.filemanagement.domain.FileManagement@69d, com.afirme.filemanagement.domain.FileManagement@662]] retrieved via key [fileManagements] is not supported by the Marshaller
at org.springframework.web.servlet.view.xml.MarshallingView.locateToBeMarshalled(MarshallingView.java:129)
at org.springframework.web.servlet.view.xml.MarshallingView.renderMergedOutputModel(MarshallingView.java:98)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1120)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:890)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:851)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:756)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
FileManagement.java :
@XmlRootElement
public class FileManagement {
private Long id;
private String code;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
FileManagementService.java :
public interface FileManagementService {
/**
* Find all FileManagements.
* @return
*/
public List<FileManagement> findAll();
}
FileManagementController.java :
@Controller
public class FileManagementController {
@RequestMapping(value="/filemanagements", method=RequestMethod.GET)
public String list(Model model) {
model.addAttribute("fileManagements", fileManagementService.findAll());
return LIST_VIEW;
}
private static final String LIST_VIEW = "/filemanagements/list" ;
}
servletContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd">
<oxm:jaxb2-marshaller id="marshaller">
<oxm:class-to-be-bound
name="com.afirme.filemanagement.domain.FileManagement" />
</oxm:jaxb2-marshaller>
<context:component-scan
base-package="com.afirme.filemanagement.controller" />
<bean id="xmlViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp" />
<property name="suffix" value=".jsp" />
</bean>
<mvc:annotation-driven/>
</beans>
/WEB-INF/views.xml :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean name="/filemanagement/list" class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller" ref="marshaller"/>
<property name="modelKey" value="fileManagements"/>
</bean>
</beans>
我究竟做错了什么?
这是行不通的,因为Spring的JAXB
marshaller(Jaxb2Marshaller)期望类上的@XmlRootElement能够编组。因此,可以通过添加一个中间类来表示列表来解决它:
@XmlRootElement(name = "files")
public class FileManagementList {
@XmlElement(name = "file")
private List<FileManagement> files;
public FileManagementList() {
this(Collections.<FileManagement>emptyList());
}
public FileManagementList(List<FileManagement> files) {
this.files = files;
}
}
描述: 建立一个基于SpringMVC的JavaEE项目 运行该项目,效果良好。 添加Hibernate4框架库支持 问题,异常 1)在我将“data source”bean添加到SpringMVC配置文件后,它总是在启动时抛出。 ServletContext资源[/WEB-INF/dispatcher servlet.XML]的XML文档中的第45行无效;嵌套的异常是org.xml.sax。SA
声明:本系列都是原创内容,觉得好就顶一个,让更多人知道!!写博客不容易,写原创更不容易!! 6.5、请求映射 处理器定义好了,那接下来我们应该定义功能处理方法,接收用户请求处理并选择视图进行渲染。首先我们看一下图6-1: http请求信息包含六部分信息: ①请求方法,如GET或POST,表示提交的方式; ②URL,请求的地址信息; ③协议及版本; ④请求头信息(包括Cookie信息);
我是Springmvc3的新手,正在看一个jQuery Handsontable示例。 这是我的jsp页面中包含表单的部分 控制器: 类: 当提交表单时,我得到了这个错误。 不支持内容类型“application/x-www-form-urlencoded” 我希望从jsp接收值数组,以便能够在控制器上迭代它。我在示例中看到这是可能的,但这是使用modelAttribute。我还是个新手,已经在这
我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?
我已经为android Studio创建了一个webview应用程序。但没有加载web URL。错误为NET::ERR_ACCESS_DENIED。有谁能帮忙吗
我有一个使用Java Version8的Spring和Maven的项目。当我运行maven update时,它适用于Java9或更高版本,当我编译它时,它适用于Java8。我注意到了这一点,因为用Maven更新会将一个特定的类更改为Java9,而我无法导入这个类。 这个类是:javax.annotation.generated(Java8)。 这是要导入的类。但是,当我进行maven更新时,文件的
当应用程序启动EncryptionBootstrapConfiguration无法自动装配我的自定义TextEncryptor-https://github.com/spring-cloud/spring-cloud-commons/blob/cde7c7f3118382490c28776f66e0a56f248141fd/spring-cloud-context/src/main/java/or
我有一个问题,找出我的源代码中的错误。 有什么办法可以解决它吗? 我的代码中抛出了“ArrayIndexOutOfBoundsException”,但我无法找到它的位置。 android studio中的logcat: