在JSP中在Tiles中进行通信

时间:2013-01-10 06:58:38

标签: tiles tile apache-tiles

我有一个标题,菜单和一个加载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>

1 个答案:

答案 0 :(得分:2)

Tiles并没有真正相互“沟通”。

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

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

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