简体   繁体   中英

Play Framework: How do I change active class on route change

I am using Play Framework 2 for Java and Bootstrap Helper in my project and I want to apply active class on sidebar link click. I am using side nav bar for navigation and by default one link is always has active class on page load, so thats why in every time only one link is highlighted as a active link, but how to change the class="active" on route or link change, is there any way to check the route path is our html scala template file.

Here are my side bar navigation code.

<ul class="nav nav-list">
     <li class="active"><a href="/menu1">Menu1</a></li>
     <li><a href="/menu2">Menu2</a></li>
     <li><a href="/menu3">Menu3</a></li>
</ul>

Here are my routes file

GET    /menu1          com.demo.project.controllers.DemoController.menu1()
GET    /menu2          com.demo.project.controllers.DemoController.menu2()
GET    /menu3          com.demo.project.controllers.DemoController.menu3()

Please give me some suggestion on it!

Finally I got solution for my problem, I am sharing my solution for others too. Firstly I created a method inside my html scala template file.

@activeLink(currentPath:String) = @{
if(request.path.equals(currentPath)) "active"
}

Now need to call the above method inside class attribute of anchor tag.

<ul class="nav nav-list">
 <li class="@activeLink("/menu1")"><a href="/menu1">Menu1</a></li>
 <li class="@activeLink("/menu2")"><a href="/menu2">Menu2</a></li>
 <li class="@activeLink("/menu3")"><a href="/menu3">Menu3</a></li>
</ul>

Here is my final solution, If some one has another solution or approaching different way for the same so please share those also.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM