Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将复杂对象从控制器传递到视图(jsp)_Java_Spring_Jsp_Spring Mvc - Fatal编程技术网

Java 如何将复杂对象从控制器传递到视图(jsp)

Java 如何将复杂对象从控制器传递到视图(jsp),java,spring,jsp,spring-mvc,Java,Spring,Jsp,Spring Mvc,我需要将一个复杂对象从SpringMVC控制器传递到视图,并能够使用它的所有属性。对象本身具有其他类对象的列表,而这些对象具有其他类对象的列表,依此类推。我正在尝试从中呈现将用作treeView的多级无序列表 我能这样做吗?怎么做 顺便说一句,我已经试着“定期”通过了,但我 org.apache.jasper.el.JspPropertyNotFoundException: /WEB-INF/pages/index.jsp(29,8) '${rootAsObject.JWSs}' Propert

我需要将一个复杂对象从SpringMVC控制器传递到视图,并能够使用它的所有属性。对象本身具有其他类对象的列表,而这些对象具有其他类对象的列表,依此类推。我正在尝试从中呈现将用作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"; 
}
My 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>

  • ${jws.ActualFile.getName()}

您可以在从控制器返回视图时向模型添加属性,并使用JSTL表达式访问此属性引用的对象。

将复杂视图模型传递给控制器的最佳方法是使用自定义模型绑定器。当数据从视图发送到控制器时,MVC默认模型绑定器用于说明如何将数据值绑定到视图模型。通过创建自定义模型绑定器,可以控制如何将值绑定到视图模型

  • 传递到视图中的对象应该是有效的JavaBean对象。 所以所有字段都是getter和setter私有的
  • 例如:

    public class Xxx implements Serializable {
       @Getter @Setter
       private String someField;
       // constructor, etc.
    }
    
  • 您可以通过以下方式将其传入控制器以查看:

    addAttribute(“someName”,yourJavaComplexBeanObject)

  • 您可以通过其属性名(someName)和属性名在视图中使用它, 例如:


  • ${someName.someProperty}

    传递复杂对象的方式与传递简单对象的方式相同:将其存储在模型中。我想我已经尝试过了。我刚刚编辑了我的问题…错误消息告诉您问题是什么:JSP找到了com.model.Root类型的对象。但它没有名为“JWSs”的属性。因此,问题出在com.model.Root或JSP中。不在你的控制器里。编程的第一条规则:阅读错误消息。不,不,Root拥有JWSs属性100%,我在与此相关的其他项目中使用此模型,即使在这个项目中,如果我直接从Root对象生成treeview,JWSs也存在。我希望避免在模型中生成视图,这就是我试图在.jspIf中呈现列表的原因。如果JSP告诉您它没有JWSs属性,那么它就没有JWSs属性。向我们展示模型的代码。属性,顺便说一句,以小写字符开头。所以不,它没有JWSs属性。尝试过,但我收到一条异常消息。请查看已编辑的问题。如果您试图访问对象的属性,请确保bean中有此属性,并且该bean是有效的java bean。我很抱歉回答下一个问题,但是“我该如何做”?我对SpringMVC是100%的新手,对Java也是相当陌生的。。。你有什么有用的链接吗?谢谢,我会浏览并寻找解决方案。