【问题标题】:Handle JSP within a java class (Spring MVC)在 java 类中处理 JSP (Spring MVC)
【发布时间】:2014-12-17 02:08:29
【问题描述】:

我目前正在使用 Spring MVC 4 开发新的 Web 应用程序。

我有四个文件名为:header.jsp、menu.jsp、default.jsp 和 footer.jsp,它们基本上是我的 webapp 的模板。

所以,我的 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 等等的类......因为它们将是动态页面并且它们的内容会改变。

我知道我可以在 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>

这可能吗?

【问题讨论】:

    标签: java spring jsp spring-mvc servlets


    【解决方案1】:

    是的,这是可能的,您只需在 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;
    }
    }
    

    使用jstl,而不是scriptlet。

    <%@ 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 以获得更好的模板框架。

    【讨论】:

    • 感谢您的回复。也许我留下了一些重要的观点,我不想使用控制器来处理菜单项。我想有一个独立的类来处理 menu.jsp。使用您的解决方案,我必须让每个方法都返回ModelAndView("default","menuItems",menu.menuItems())),这不是我打算做的!还是谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2018-08-31
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多