【问题标题】:Spring MVC 3 + Tiles 3春季 MVC 3 + 瓷砖 3
【发布时间】:2014-06-14 17:20:10
【问题描述】:

我希望有人可以在这里为我指明正确的方向。基本上,我不断从我的请求中将 404 返回到我的 Spring 控制器中。控制器返回视图名称“showcardOverview”。该请求可以毫无问题地进入控制器。我无法弄清楚为什么 Tiles 无法将视图名称解析为 tile 定义。

以下是我的配置文件:

瓷砖定义

<tiles-definitions>
    <definition name="base" template="/jsp/layouts/flagship.jsp">
        <put-attribute name="head" value="/jsp/assets/head.jsp" />
        <put-attribute name="left" value="/jsp/assets/left.jsp" />
    <put-attribute name="right" value="/jsp/assets/right.jsp" />
        <put-attribute name="body" />
    </definition>

    <definition name="showcardOverview" extends="base">
        <put-attribute name="body" value="/jsp/Showcard-Overview.jsp" />
    </definition>
</tiles-definitions>

弹簧视图配置

<mvc:annotation-driven></mvc:annotation-driven>
<context:component-scan base-package="com.tms.zcore.movies.controller" />

<bean id="tilesviewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>      
    <property name="order" value="1"/>
</bean>

<bean id="tilesConfigurer"
    class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/conf/tiles/tiles-defs.xml</value>
        </list>
    </property>
</bean>

编辑:

这是我的控制器类

@Controller
@RequestMapping(value="/Showcard")
public class MovieShowcardController {

    @RequestMapping("/Overview/{id}/{seoName}")
    public String getMovieOverview(@PathVariable(value="id") String movieId, @PathVariable(value="seoName") String seoName, Model model) {
        return "showcardOverview";
    }
}

【问题讨论】:

  • 您确定相对路径正确吗:/WEB-INF/conf/tiles/tiles-defs.xml/jsp/Showcard-Overview.jsp
  • 如果可能的话,请给我一个项目目录。原因可能来自路径。
  • 嘿。是的,路径是正确的。我通过将它们移入和移出始终返回 404 的 WEB-INF 目录进行了实验。

标签: spring-mvc tiles-3


【解决方案1】:

您是否在 TilesViewResolver/TilesView 中进行了调试以查看 Tiles 定义是否得到正确解析? 404 表示它确实如此,并且 Tiles 已转发到 JSP 但失败了。 Tiles 2 也一样吗? IE。这是与 Tiles 3 相关的问题吗?

【讨论】:

  • 我正在使用 Spring TilesViewResolver 和 TilesView 实现,因此如果没有源代码,我无法在其中进行调试。然而,我已经将 Tiles3 换成了 Tiles2 实现,并更改了我的 Spring 配置以匹配更改。我仍然收到 404 回复。
  • 所以,下载并附加瓦片源我可以看到,当我进入 BasicTilesContainer 时,传递给渲染方法的定义对象具有以下属性。 {name=showcardOverview, template=/WEB-INF/jsp/layouts/flagship.jsp, role=null, preparerInstance=null, attributes={body=/WEB-INF/jsp/Showcard-Overview.jsp, left=/WEB -INF/jsp/assets/left.jsp,head=/WEB-INF/jsp/assets/head.jsp,right=/WEB-INF/jsp/assets/right.jsp}}
【解决方案2】:

在图块定义中使用 jsp 的完整路径,例如:而不是 /jsp/layouts/flagship.jsp 放入 /WEB-INF/jsp/layouts/flagship.jsp

【讨论】:

    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2012-12-10
    • 2017-04-25
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    相关资源
    最近更新 更多