[英]Handle JSP within a java class (Spring MVC)
我目前正在使用Spring MVC 4開發新的Web應用程序。
我有四個文件名為:header.jsp,menu.jsp,default.jsp和footer.jsp,它們基本上是我的Web應用程序的模板。
因此,我的default.jsp是應用程序中每個其他頁面的默認模板,基本上是這樣的:
...
<jsp:include page="header.jsp" />
<jsp:include page="menu.jsp">
<body>
Contents goes here
</body>
<jsp:include page="footer.jsp">
...
控制器:
...
@RequestMapping("/")
public ModelAndView index() {
return new ModelAndView("default");
}
...
我要完成的工作是制作一個可以處理header.jsp的java類,可以處理menu.jsp的java類,等等。因為它們將是動態頁面,其內容也會改變。
我知道我可以在JSP中使用Java代碼,但這是我不想做的。 我想做的例子:
public class menu {
//this class handles menu.jsp
public List menuItems() {
ArrayList menuItems = new ArrayList();
menuItems.add("Home");
menuItems.add("Contact");
return menuItems;
}
}
在menu.jsp中:
<%@ codebehind="menu.java" %>
<ul>
<li> ${item[0]} </li> <!-- would output 'Home' -->
<li> ${item[1]} </li> <!-- would output 'Contact' -->
</ul>
那可能嗎?
是的,這是可能的,您只需要在ModelAndView上添加模型。
"menuItem" - will be name of your model.
"menu.menuItems()" - is your modelObject.
調節器
@RequestMapping("/")
public ModelAndView index() {
Menu menu = new Menu();
return new ModelAndView("default", "menuItems", menu.menuItems());
}
菜單
public class Menu {
//this class handles menu.jsp
public List menuItems() {
ArrayList menuItems = new ArrayList();
menuItems.add("Home");
menuItems.add("Contact");
return menuItems;
}
}
而不是scriptlet,請使用jstl 。
<%@ codebehind="menu.java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<ul>
<c:forEach var="menu" value="${menuItem}">
<li><c:out value="${menu}"/></li>
</c:forEach>
</ul>
我也建議您將Apache Tiles與spring一起使用,以獲得更好的模板框架。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.