春季3 MVC和瓷砖 - 填充*的.jsp页面之前的一些数据 [英] Spring 3 mvc and tiles - populate *.jsp page with some data before

查看:232
本文介绍了春季3 MVC和瓷砖 - 填充*的.jsp页面之前的一些数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Spring MVC 3和Apache 3.0瓦。

I'm using Spring 3 mvc and Apache Tiles 3.0.

我不知道如何插入* jsp页面中的一些数据,我将在后面的模板瓷砖用于插入*的.jsp页面。

I don't know how to insert some data in *jsp page which I will later use for insert in template tiles *.jsp page.

瓷砖defiontions文件看起来是这样的:

Tiles defiontions file looks like this:

<tiles-definitions>
    <definition name="base.definition" template="/WEB-INF/views/layout.jsp">
        <put-attribute name="title" value=""  />
        <put-attribute name="banner" value="/WEB-INF/views/banner.jsp" />
        <put-attribute name="path" value="" />
        <put-attribute name="menu" value="/WEB-INF/views/menu.jsp" />
        <put-attribute name="data" value="" />
        <put-attribute name="position" value="" />
    </definition>   
    <definition name="/" extends="base.definition">
        <put-attribute name="title" value="Home" />
        <put-attribute name="path" value="/WEB-INF/views/path.jsp" />
        <put-attribute name="data" value="/WEB-INF/views/data.jsp" />
        <put-attribute name="position" value="/WEB-INF/views/position.jsp" />
    </definition>   
</tiles-definitions>

欲填充/WEB-INF/views/data.jsp页面的一些数据,例如 - 行形成数据库,之后,用它像模板网页的一部分(在这种情况下,它的布局页)

I want to populate "/WEB-INF/views/data.jsp" page with some data, for example - rows form database, and after that to use it like part of template page (in this case it's layout page).

Layout.jsp网页看起来是这样的:

Layout.jsp page looks like this:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title><tiles:insertAttribute name="title" /></title>
    <link rel="stylesheet" href="<spring:theme code='body' />" type="text/css" />
    <link rel="stylesheet" href="<spring:theme code='page' />" type="text/css" />
    <link rel="stylesheet" href="<spring:theme code='banner' />" type="text/css" />
    <link rel="stylesheet" href="<spring:theme code='path' />" type="text/css" />
    <link rel="stylesheet" href="<spring:theme code='main' />" type="text/css" />
    <link rel="stylesheet" href="<spring:theme code='menu' />" type="text/css" />
    <link rel="stylesheet" href="<spring:theme code='source' />" type="text/css" />
    <link rel="stylesheet" href="<spring:theme code='position' />" type="text/css" />
    <link rel="stylesheet" href="<spring:theme code='data' />" type="text/css" />
</head>

    <body>
        <div id="page">
            <div id="banner">
                <tiles:insertAttribute name="banner" />
            </div>
            <div id="path">
                <tiles:insertAttribute name="path" />
            </div>
            <div id="main">
                <span id="menu">
                    <tiles:insertAttribute name="menu" />
                </span>
                <span id="source">
                    <span id="position">
                        <tiles:insertAttribute name="position" />
                    </span><br/>
                    <span id="data">
                        <span id="dataSource">
                            <tiles:insertAttribute name="data" />
                        </span>
                        <span id="dataSource">
                            <tiles:insertAttribute name="data" />
                        </span>
                        <span id="dataSource">
                            <tiles:insertAttribute name="data" />
                        </span>
                    </span>
                </span> 
            </div>
        </div>
    </body>
</html>

如果我把&LT;地砖:insertAttribute NAME =rowsFromDb/ WEB-INF /视图/ data.jsp我已经得到了一个错误:

If I put <tiles:insertAttribute name="rowsFromDb" in "/WEB-INF/views/data.jsp" I've gotten an error:

SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.tiles.template.NoSuchAttributeException: Attribute 'rowsFromDb' not found.

我不知道如何将数据发送到这个属性'rowsFromDb'!我只知道如何将数据发送到是布局页面(模板 - parrent)上的变量

I don't know to how to send data to this attribute 'rowsFromDb'! I only know how to send data to variables that are on the layout page (template - parrent)

推荐答案

如果你打算在属性 rowsFromDb 持有的记录列表,那么你应该填充这在控制器中,并设置在模型的列表中。然后在 data.jsp 您可以遍历使用&LT此列表; C:的forEach&GT; 标记。例如(一madeup例子来说明这一点):

If you're intending to hold a list of records in the attribute rowsFromDb, then you should populate this in your controller and set the list in the model. Then in data.jsp you can iterate this list using the <c:forEach> tag. For example (a madeup example to illustrate the point):

控制器

@RequestMapping("/listRows")
public ModelAndView listRows() {
    List<Row> rows = myRepository.getAllRows(); // Hide the DB query code behind a repository
    ModelAndView modelAndView = new ModelAndView("/");
    modelAndView.addObject("rowsFromDb", rows); // Set the data in the model
    return modelAndView;
}

data.jsp

<c:forEach items="${rowsFromDb}" var="row">
    <c:out value="${row.someProperty}"/>
<c:forEach>

您应该避免直接在JSP本身做任何数据库查询(并避免在JSP任何Java如果可能)。该JSP应该只是处理使得它由控制器给出的数据。

You should avoid doing any database query directly in the JSP itself (and avoid any Java in the JSP where possible). The JSP should just deal with rendering the data it is given by the controller.

这篇关于春季3 MVC和瓷砖 - 填充*的.jsp页面之前的一些数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆