0

我们可以使用mvc:view-controller标签来显示瓷砖视图吗?

例如:如果我们有表单定义的tiles定义,

name="userLogon.page" 
template="webapp/app/layout/baseLayoutExterior.jsp" 
extends="basePageDefinition"

mvc:view-controller path="/logon" view-name="userLogon.page"我们可以在我们的servlet.xml文件中写入。

我收到一个HTTP 404 RESOURCE NOT FOUND ERROR,而正常hello.jsp页面显示没有问题。

请帮助我卡住了。

4

1 回答 1

1

是的

您需要添加一个TilesConfigurer和一个TilesView

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"
    id="tilesViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"
    id="tilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/layouts/layouts.xml</value>
            <!-- Scan views directory for Tiles configurations -->
            <value>/WEB-INF/views/**/views.xml</value>
        </list>
    </property>
</bean>

示例 Layout.xml 位于webapp/WEB-INF/layouts

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">

<tiles-definitions>

  <definition name="default" template="/WEB-INF/layouts/default.jspx">
    <put-attribute name="header" value="/WEB-INF/views/header.jspx" />
    <put-attribute name="menu" value="/WEB-INF/views/menu.jspx" />
    <put-attribute name="footer" value="/WEB-INF/views/footer.jspx" />
  </definition>

</tiles-definitions>

view.xml 之一位于webapp/WEB-INF/views/bookmarks

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
    <definition extends="default" name="bookmarks/show">
        <put-attribute name="body" value="/WEB-INF/views/bookmarks/show.jspx" />
    </definition>       
    <definition extends="default" name="bookmarks/list">...</definition>
    <definition extends="default" name="bookmarks/create">...</definition>      
    <definition extends="default" name="bookmarks/update">...</definition>
</tiles-definitions>

一种控制器方法:

@RequestMapping("/bookmarks")
@Controller
public class BookmarkController {
    ...
    /** Return the show page. */
    @RequestMapping(method = RequestMethod.GET, value = "/{id}")
    public ModelAndView show(@PathVariable("id") long bookmarkId) {
        return new ModelAndView("bookmarks/show", "bookmark", bookmarkDao.getBzId(bookmarkId));
    }
}
于 2013-04-01T09:10:39.270 回答