Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Apache Tiles 2.5-将菜单元素标记为活动_Spring_Spring Mvc_Tiles2_Apache Tiles - Fatal编程技术网

Spring Apache Tiles 2.5-将菜单元素标记为活动

Spring Apache Tiles 2.5-将菜单元素标记为活动,spring,spring-mvc,tiles2,apache-tiles,Spring,Spring Mvc,Tiles2,Apache Tiles,我正在使用SpringMVC3.1和Tiles 2 我有这个瓷砖: <ul class="nav"> <li class="active"><a href="/person">Person</a></li> <li><a href="/student">Student</a></li> <li><a href="/superadmin">Superadm

我正在使用SpringMVC3.1和Tiles 2

我有这个瓷砖:

<ul class="nav">
  <li class="active"><a href="/person">Person</a></li>
  <li><a href="/student">Student</a></li>
  <li><a href="/superadmin">Superadmin</a></li>
</ul>
以及tiles.xml:

<tiles-definitions>
    <definition name="base.definition" template="/WEB-INF/pages/tiles/template.jsp">
        <put-attribute name="meta" value="/WEB-INF/pages/tiles/meta.jsp" />
        <put-attribute name="head" value="/WEB-INF/pages/tiles/head.jsp" />
        <put-attribute name="navbar" value="/WEB-INF/pages/tiles/navbar.jsp" />
        <put-attribute name="sidebar" value="/WEB-INF/pages/tiles/sidebar.jsp" />
        <put-attribute name="body" value="" />
        <put-attribute name="footer" value="/WEB-INF/pages/tiles/footer.jsp" />
    </definition>


    <definition name="user.new" extends="base.definition">
      <put-attribute name="body" value="/WEB-INF/pages/user.new.jsp" />
    </definition>

    <definition name="user.show" extends="base.definition">
      <put-attribute name="page_title" value="Tiles tutorial homepage" type="string"/>
      <put-attribute name="section_title" value="User's list" type="string"/>
      <put-attribute name="body" value="/WEB-INF/pages/user.show.jsp" />
    </definition>


    <definition name="login" template="/WEB-INF/pages/login.jsp">
        <put-attribute name="meta" value="/WEB-INF/pages/tiles/meta.jsp" />
        <put-attribute name="head" value="/WEB-INF/pages/tiles/head.jsp" />
        <put-attribute name="body" value="/WEB-INF/pages/login.jsp" />
    </definition>

</tiles-definitions>

现在,我想为所选菜单设置类“active”。
我可以用瓷砖做吗?或者我必须查找Spring?

方法1-JSP/JSTL和Spring/Bean

更改菜单平铺以使用某些菜单对象的列表构建菜单,您可以在会话/模型上设置这些对象。菜单对象可以有一个布尔标志,指示将活动类设置在哪个上

方法2-JavaScript/会话

如果不想这样做,可以使用HTML类、JavaScript和会话/模型属性的组合来完成任务。您要做的是在LI元素上重载class属性,例如:

<ul class="nav">
  <li class="person"><a href="/person">Person</a></li>
  <li class="student"><a href="/student">Student</a></li>
  <li class="superadmin"><a href="/superadmin">Superadmin</a></li>
</ul>
这将使用jQuery选择适当的LI并向其中添加“活动”类

方法3-使用URL的纯JSTL

如果您不喜欢将菜单绑定到属性的存在,并且您知道在解析URL时,URL将包含一些信息,您可以使用这些信息来确定要将哪个LI设置为活动状态,那么您可以使用这些信息。您可以获得当前页面的URL,如

<c:out value="${pageContext.request.requestURL}"/>

以某种有意义的方式解析${pageContext.request.requestURL},您可以使用它来确定哪个是活动的

方法4-使用URL的纯JavaScript

与上面相同,但是使用JavaScript获取当前URL,解析它,并像我们在方法2中所做的那样操作DOM


希望其中一个能帮助您。

非常感谢您!抱歉迟到了,但网站没有通知我!如果满足您的要求,您应该将此响应设置为解决方案。tiles方式如何?除非Apache tiles有一些我不知道的功能,否则您仍然需要在tile中传递一些内容或使用一些逻辑在active和not active之间切换。Tiles只允许您封装JSP片段并将其连接到模块化模板中。也许有一种方法可以设置一个
if/else
,但是如果有,我不知道。
<c:out value="${pageContext.request.requestURL}"/>