2014-12-17 3 views
0

저는 현재 새로운 웹 애플리케이션 개발을 위해 Spring MVC 4를 사용하고 있습니다.자바 클래스 내에서 JSP 처리하기 (Spring MVC)

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를 처리 할 수있는 자바 클래스를 만든다. 하나는 menu.jsp를 처리 할 수 ​​있고, 다른 하나는 동적 페이지가 될 것이고 그 내용은 바뀔 것이다.

JSP로 자바 코드를 사용할 수 있다는 것을 알고 있지만 그게 내가하고 싶지 않은 것입니다. 무엇 예 내가하고 싶으면 :

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> 

는 것이 가능할까요?

답변

1

예, 가능합니다. ModelAndView에 모델을 추가하기 만하면됩니다.

"menuItem" - will be name of your model. 
"menu.menuItems()" - is your modelObject. 

컨트롤러 스크립 이상의

public class Menu { 
//this class handles menu.jsp 
public List menuItems() { 
    ArrayList menuItems = new ArrayList(); 
    menuItems.add("Home"); 
    menuItems.add("Contact"); 
    return menuItems; 
} 
} 

오히려

@RequestMapping("/") 
public ModelAndView index() { 
     Menu menu = new Menu(); 
     return new ModelAndView("default", "menuItems", menu.menuItems()); 
} 

메뉴, 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> 

또한 더 나은 템플릿 프레임 워크 springApache Tiles을 사용하도록 추천 할 것입니다.

+0

답장을 보내 주셔서 감사합니다. 어쩌면 내가 몇 가지 중요한 사항을 남겼습니다. 컨트롤러를 사용하여 메뉴 항목을 처리하고 싶지는 않습니다. menu.jsp를 처리 할 독립적 인 클래스를 갖고 싶습니다. 귀하의 솔루션으로 나는 모든 메소드가'ModelAndView ("default", "menuItems", menu.menuItems())'를 리턴해야 할 것입니다. 그리고 이것은 내가하려는 계획이 아닙니다! 어쨌든 고맙습니다. – Bruno

관련 문제