【问题标题】:Spring model object becomes null on jspSpring模型对象在jsp上变为空
【发布时间】:2015-04-13 10:15:00
【问题描述】:

我有一个 spring 项目,我的问题是当我在控制器中调试它时,我的模型对象在 jsp 上变为空,它显示数据,但在 jsp 上没有显示任何内容,并且日志中没有错误。

我最近添加了弹簧瓦片配置,瓦片工作正常,但这些对象在正常工作之前停止显示。

我对此进行了很多搜索,并在 stackoverflow 上检查了类似 Spring Model Object is not rendering 的相同链接,但没有任何效果。

这是我的控制器:

@RequestMapping(value = "/viewClient", method = RequestMethod.GET)
public String viewClient(ModelAndView model) {
    ArrayList<SystemUser> systemUsers = clientController.getAllUsers();
    model = new ModelAndView("systemUsers");
    model.addObject("systemUsers", systemUsers);
    return "viewClient";
}

spring-config.xml

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">

    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />

    <property name="order">
        <value>0</value>
    </property>

</bean>

<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer">

    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles.xml</value>
        </list>
    </property>

</bean>

tiles.xml

<tiles-definitions>
    <definition name="base.definition" template="/WEB-INF/pages/Theme/Template/mainTemplate.jsp">
        <put-attribute name="title" value=""></put-attribute>
        <put-attribute name="header" value="/WEB-INF/pages/Theme/Template/header.jsp"></put-attribute>
        <put-attribute name="menu" value="/WEB-INF/pages/Theme/Template/menu.jsp"></put-attribute>
        <put-attribute name="body" value=""></put-attribute>
        <!-- <put-attribute name="footer" value="/WEB-INF/pages/Theme/Template/footer.jsp"></put-attribute> -->
    </definition>

    <definition name="base.definition.login" template="/WEB-INF/pages/Theme/Template/loginTemplate.jsp">
        <put-attribute name="title" value=""></put-attribute>

        <put-attribute name="body" value=""></put-attribute>
    </definition>

    <definition extends="base.definition" name="viewClient">
        <put-attribute name="title" value="View Client"></put-attribute>
        <put-attribute name="body" value="/WEB-INF/pages/Theme/Admin/viewClient.jsp"></put-attribute>
    </definition>
<tiles-definitions>

viewClient.jsp:

<table class="table table-striped table-advance table-hover">
    <h4>
    <!-- <i class="fa fa-angle-right"></i> --> Client Details
    </h4>
    <thead>
        <tr>
            <th><i class="fa fa-bullhorn"></i> index --${systemUsers.size()}--size </th>
            <th><i class="fa fa-bullhorn"></i> Username</th>
            <th><i class="fa fa-bullhorn"></i> Password</th>
            <th><i class="fa fa-bullhorn"></i> User role</th>
            <th><i class="fa fa-bullhorn"></i> Mobile No</th>

            <th><i class="fa fa-bullhorn"></i> Email ID</th>
            <th><i class="fa fa-bullhorn"></i> SMSC</th>
            <th><i class="fa fa-bullhorn"></i> Virtual Sim ID</th>

            <th></th>
        </tr>
    </thead>
    <tbody>
        <c:set var="count" value="0" scope="page" />
        <c:forEach var="user" items="${systemUsers}">
            <tr>
                <td>${count + 1}</td>
                <td>${ user.getUsername()}</td>
                <td>${ user.getPassword()}</td>
                <td>${user.getUserrole()}</td>
                <td>${user.getMobileNumber()}</td>
                <td>${user.getPrimaryEmailAddress()}</td>
                <td>${user.getSmsc()}</td>
                <td>${user.getVirtualSimID()}</td>
                <td>
                    <button class="btn btn-success btn-xs">
                        <i class="fa fa-check"></i>
                    </button>
                    <button class="btn btn-primary btn-xs">
                        <i class="fa fa-pencil"></i>
                    </button>
                    <button class="btn btn-danger btn-xs">
                        <i class="fa fa-trash-o "></i>
                    </button>
                </td>
            </tr>
            <c:set var="count" value="${count + 1}" scope="page" />
        </c:forEach>

    </tbody>
</table>

In the jsp the systemUsers are not getting iterated nor displayed not its size is getting displayed..

【问题讨论】:

  • 在视图客户端方法中尝试删除这一行 --> model = new ModelAndView("systemUsers");

标签: java jsp spring-mvc tiles2


【解决方案1】:

改正并将返回类型更改为ModelAndView

@RequestMapping(value = "/viewClient", method = RequestMethod.GET)
public ModelAndView viewClient() {
    ArrayList<SystemUser> systemUsers = clientController.getAllUsers();
    ModelAndView model = new ModelAndView("viewClient");
    model.addObject("systemUsers", systemUsers);
    return model ;
}

或使用

@RequestMapping(value = "/viewClient", method = RequestMethod.GET)
public String viewClient(ModelMap model) {
    ArrayList<SystemUser> systemUsers = clientController.getAllUsers();
    model.addAttribute("systemUsers", systemUsers);
    return "viewClient";
}

查看接受视图名称的ModelAndView

【讨论】:

  • 我可能错了,但我认为没必要!! Please have a look into it
  • OP 正在初始化 ModelAndView 两次,这会产生问题。
  • 是的,我已经在评论中提到了同样的答案!
  • 我首先使用了模型,但它也不起作用,所以我尝试了 modelAndView,但它也不起作用
  • 谢谢我尝试返回 viewAndmodel 对象,它现在可以工作了。 :) 帮助很大
【解决方案2】:

你也可以试试这个接口模型来解决这个问题:

@RequestMapping(value = "/viewClient", method = RequestMethod.GET)
public String viewClient(Model model) {
    ArrayList<SystemUser> systemUsers = clientController.getAllUsers();
    model.addAttribute("systemUsers", systemUsers);
    return "viewClient";
}

确保在您的 pom.xml 中存在以下依赖项:

<properties>
    <spring.version>4.0.2.RELEASE</spring.version>
</properties>



 <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>${spring.version}</version>
 </dependency>

【讨论】:

    【解决方案3】:

    不要重新初始化ModelAndView对象

        @RequestMapping(value = "/viewClient", method = RequestMethod.GET)
        public String viewClient(ModelAndView model) {
            ArrayList<SystemUser> systemUsers = clientController.getAllUsers();
            model.addObject("systemUsers", systemUsers);
            return "viewClient";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 2012-03-18
      • 2017-02-17
      • 1970-01-01
      相关资源
      最近更新 更多