我需要将一个复杂的对象从Spring MVC控制器传递给视图,并能够使用它的所有属性。该对象本身具有其他类对象的列表,并且具有其他类对象的列表,依此类推。我正在尝试渲染多级无序列表,它将用作treeView。
我可以这样做吗?
我已经尝试过“定期”通过它,但我得到了
org.apache.jasper.el.JspPropertyNotFoundException: /WEB-INF/pages/index.jsp(29,8) '${rootAsObject.JWSs}' Property 'JWSs' not found on type com.model.Root
我的控制器......
@RequestMapping(method = RequestMethod.GET)
public String someFunction(ModelMap model,HttpServletRequest request) {
model.addAttribute("rootAsAttribute", this.GenerateTreeView(appconfigProperties));
model.addObject("rootAsObject", this.GenerateTreeView(appconfigProperties));
return "index";
}
我的index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div style="float: left; width: 20%; height: 100%; overflow-x: scroll">
<ul>
<c:forEach items="${rootAsObject.JWSs}" var="jws">
<li>${jws.ActualFile.getName()}</li>
</c:forEach>
</ul>
</div>
<div style="float: left; width: 80%" id="thePage">
<iframe id="frame1" name="frame1" scrolling="auto" runat="server" style="float: left; width: 100%; height: 100%;"
frameborder="0" scrolling="no"></iframe>
</div>
</body>
</html>
答案 0 :(得分:2)
从控制器返回视图时,可以向模型添加属性,并使用JSTL表达式访问此属性引用的对象。
答案 1 :(得分:0)
将复杂视图模型传递给控制器的最佳方法是使用自定义模型绑定器。当数据从视图发送到控制器时,MVC默认模型绑定器用于计算如何将数据值绑定到视图模型。通过创建自定义模型绑定器,您可以控制值与视图模型绑定的方式。
答案 2 :(得分:0)
考试:
public class Xxx implements Serializable {
@Getter @Setter
private String someField;
// constructor, etc.
}
您将其传递给控制器以通过以下方式查看:
model.addAttribute(“someName”,yourJavaComplexBeanObject);
您可以通过其属性名称(someName)和属性名称在视图中使用它, 例如:
<p>${someName.someProperty}</p>
所以你需要保持Java Bean命名约定,字段以小写开头并有getter / setter,然后通过字段名称使用它