【问题标题】:Communicating Within Tiles in JSP在 JSP 中的 Tiles 内通信
【发布时间】:2013-01-10 06:58:38
【问题描述】:

我有一个标题、菜单和正文来加载 jsps。当我每次单击菜单元素时,整个图块都会重新加载。但我想向用户显示选定的菜单项。由于瓷砖重新加载,我无法获取用户单击的元素。请让我解决这个问题。谢谢

  <definition name="main-tiles" template="/WEB-INF/jsp/menu/home.jsp">
    <put-attribute name="header" value="/WEB-INF/jsp/menu/header.jsp" />
    <put-attribute name="menu" value="/WEB-INF/jsp/menu/menu.jsp" />
    <put-attribute name="body" value="" />    
  </definition>

  <definition name="home" extends="main-tiles">
    <put-attribute name="body" value="" />
  </definition>


  <!--  User Tiles -->  
  <definition name="newUser" extends="main-tiles">
    <put-attribute name="body" value="/WEB-INF/jsp/userandorg/user/newUser.jsp" />
  </definition>

【问题讨论】:

    标签: tiles tile apache-tiles


    【解决方案1】:

    瓷砖之间并没有真正的“交流”。

    当一个瓦片组成的页面在您的浏览器中完全呈现时,查看 html(查看源代码),您应该很难看到任何显示的瓦片框架。这意味着,当您的用户单击菜单时,这是与您的服务器的往返通信,该通信通过您的 servlet 代码运行,然后使用图块框架来编写生成的 html。

    您所描述的期望行为更像framesetiframe 行为,其中浏览器窗格的不同部分实际上是不同的请求/响应。您可以使用 AJAX 框架实现相同的效果,它可以调用您的 servlet,然后动态更新 html 的特定块(通常定义为 divspan 元素),而无需刷新整个页面。

    但是,如果您只想使用您的图块组合突出显示单击的菜单,请让您的 servlet 识别单击了哪个菜单,然后在 menu.jsp 页面上使用一些 JSTL 来识别菜单项链接并提供一些 @ 987654327@ 菜单链接的样式。它仍然是往返(非AJAX)通信,但它应该给您描述的效果。

    【讨论】:

    • 嗨。谢谢您的建议。但是我的 jsp 是否可以与 menu.jsp 通信以突出显示选定的值?因为两个 jsp 都在 home.jsp 中呈现
    • 没有。 home.jsp 是您的模板,但 menu.jsp 在物理上是一个单独的 jsp。当用户点击一个菜单链接并且请求被发送到你的servlet时,servlet应该知道点击了哪个菜单,就像Show FooShow Bar的区别,对吧?由于特定的URL 或者可能通过请求上的query parameter,servlet 会知道。当 servlet 完成其操作后,它可以在请求中放置一个 attribute 以供您的 menu.jsp 查找,或者 menu.jsp 可以使用现有的 parameter,然后使用 if 语句来设置样式点击链接的东西很特别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多