【问题标题】:c:import loads different view than the one specified in tilesc:import 加载的视图与图块中指定的视图不同
【发布时间】:2011-10-01 01:04:14
【问题描述】:

使用:

  • Spring Web 3.0.5
  • JSTL 1.2.0
  • Apache Tiles 2.1.4
  • 树脂 3.1.9

template1:​​为 url1 导入 jsp
主jsp:导入/my/simple/url2 导入的jsp:没有导入也不包含的jsp页面

瓷砖: url1 的逻辑视图:url1.view(扩展 tempate1)
url2的逻辑视图:url2.view(是一个jsp页面)

现在发生的事情是这样的:
访问 /my/simple/url1 时:转到控制器和命令,然后导致 渲染一个模板(template1),导入主jsp
在看到 /my/simple/url2 的导入时,调度此 url 的请求 这反过来又使用另一个命令转到另一个控制器并呈现另一个 jsp(又名:imported jsp)

执行 url2 的控制器后,我希望 url2.view 将被渲染并附加到主 jsp。但取而代之的是,template1 再次被渲染,导致循环。

以前有人遇到过这个问题吗?我不太确定发生了什么。

【问题讨论】:

  • 只是为了交叉验证视图 2 和控制器命令 2 中没有问题,如果您直接访问视图 2,是否会出现任何错误?

标签: spring jsp jstl tiles


【解决方案1】:

好的,所以我不确定这是否适用于早期版本的 Tiles 和 Spring(当前使用 Spring 3.1 和 Tiles 2.2.2),但无论如何它都可以。

我意识到,由于某种原因,当您使用磁贴模板中的核心标签库进行导入时,假设导入依次调用 Spring MVC 控制器,它将导致无限循环。我解决这个问题的方法是执行以下操作:

  • 在布局的瓷砖定义中添加一个属性,该属性将引用一个包含执行导入代码的 jsp。比如说:

    <definition name="cti.layouts.fooBarLayout" template="/WEB-INF/views/layouts/foo-bar-layout.jsp"> <put-attribute name="body" value="/WEB-INF/views/some-body.jsp"/> <put-attribute name="foo" value="/WEB-INF/views/my-import.jsp"/> </definition>

在本例中,您想在 my-import.jsp 中添加导入代码。可以使用核心JSTL标签&lt;c:import&gt;

  • 在 foo-bar-layout.jsp 中,添加一个 tiles:insertAttribute 标记,无论你希望这个导入的页面去哪里。引用属性的名称(在本例中为 'foo'):

    &lt;tiles:insertAttribute name="foo"/&gt;

现在您可以从此布局进行扩展,而不必担心无限循环。不知道为什么这会起作用,因为我不明白底层实现在做什么,但由于某种原因,tile 不允许在模板页面内使用动态导入。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并通过使用磁贴的绝对 URI 解决了。这会触发对服务器的“干净”请求,并且不知道当前的图块渲染。

    我使用了导入,因为我需要一个更动态的 url。

    所以对于示例案例:

    <c:import url="/path/to/the/import/jsp/or/controller"/>
    

    变成

    <c:import url="http://localhost:8080/mycontext/path/to/the/import/jsp/or/controller" />
    

    当然你需要根据你的适用情况更新baseURI。

    这避免了在将瓦片与 c:import 组合时发生的递归

    注意:这会触发对您服务器的新 HTTP 请求。

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多