预先感谢任何帮助,因为这让我难倒了。春季MVC,瓷砖,多个控制器
我与Spring MVC的实验为即将开展的项目。我将需要应用程序中的一些网页来呈现多个可重用的“组件”,并认为Tiles应该帮助我实现这一目标?每个组件都有自己的控制器。
我已经把这个例子只是部分的工作。这是一个3瓦的页面。第三个tile有一个控制器试图将一个ArrayList(通过@ModelAttribute注释)返回给客户端,但当视图作为一个tile包含时,ArrayList是空的。
这里的地砖安装在* -servlet.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"/>
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles-config/tiles.xml</value>
</list>
</property>
</bean>
<bean id="viewResolver2" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="1" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
这里是我的瓷砖配置(tiles.xml):
<tiles-definitions>
<definition name="parent" template="/WEB-INF/jsp/tiles/parent_layout.jsp">
<put-attribute name="header" value="/WEB-INF/jsp/tiles/header.jsp"/>
<put-attribute name="body" value=""/>
<put-attribute name="recordsSection" value=""/>
<put-attribute name="widgetsSection" value=""/>
</definition>
<definition name="_n/list.htm" extends="parent">
<put-attribute name="recordsSection" value="/WEB-INF/jsp/_n/list.jsp"/>
<put-attribute name="widgetsSection" value="/WEB-INF/jsp/_n/widgets.jsp"/>
</definition>
</tiles-definitions>
这里是正在讨论的区块后面的JSP代码。 “widgetsList”表达式是绑定到控制器方法的东西,但是当这个视图作为一个tile包含时,这个表达式会变回空。
<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isELIgnored="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@taglib prefix="display" uri="http://displaytag.sf.net" %>
<h3>Widgets</h3>
<p>widgetsList=${widgetsList}</p>
<div id="displaylist">
<display:table id="items" name="${widgetsList}" cellspacing="0" export="true">
<display:column title="Widget ID" property="widgetId"/>
<display:column title="Widget Name" property="widgetName"/>
<display:column title="Widget State" property="widgetState"/>
</display:table>
</div>
这里的控制器:
@Controller
public class WidgetController {
@Autowired
private WidgetDaoImpl widgetDao = new WidgetDaoImpl();
@RequestMapping("_n/widgets.htm")
public String widgets() {
return "_n/widgets.htm";
}
@ModelAttribute("widgetsList")
public ArrayList<Widget> getWidgets() {
System.out.println("executing getWidgets()");
ArrayList<Widget> records = widgetDao.listWidgets();
return records;
}
}
当我访问视图“widgets.jsp”直接的“widgetsList”属性被填充,当它的加入,它返回一个瓦,这只是没有。
感谢这里的任何建议。
感谢您的答复
http://api.jquery.com/jQuery.getJSON/ Json的教程。我想我正在试图将瓷砖变成不是的东西。看起来在这个时候将基于组件的框架集成到我的项目中可能会有点矫枉过正,因为我只需要做这种事情,可能会有六次。我想我的一些控制器类会因此而变得相当笨拙。再次感谢! – wannabecoder 2011-05-16 16:57:11