簡體   English   中英

在Java類中處理JSP(Spring MVC)

[英]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 Tilesspring一起使用,以獲得更好的模板框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM