java - 在 java 类中处理 JSP (Spring MVC)

标签 java spring jsp spring-mvc servlets

我目前正在使用 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">
...

Controller :

...
@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.

Controller

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

关于java - 在 java 类中处理 JSP (Spring MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27517278/

相关文章:

java - 静态方法和线程安全

javascript - 登录成功后如何将JSON Web Tokens传递给不同的网页?

java - 您对 Spring MVC 应用程序中的服务层使用什么命名约定?

java - 在 Struts2 中访问 Map 键值

java - 为什么我应该将 MetadataSourceAdapter 与 MOXy 结合使用,而不是直接访问 XML 映射文件?

java - TransactionEventHandler 在 Node.setProperty() 上给出 javax.transaction.SystemException

java - 使用JSP从本地文件系统读取文件

spring - Spring MVC 中的简单搜索

java - 取消选中框

java - 如何使用 HTTP 响应代码检查外部 URL 内容是否正确加载到 JSP 页面中的 <IFRAME>