2016-10-04 4 views
0

두 가지 유형의 목록에 대해 하나의 JSP를 갖기를 원한다. 하나는 관리자 필드가 있고 다른 하나는 존재하지 않는다. 그러나 목록을 요청하는 사용자에 따라 행동을 전환 할 수있는 목록이 하나만 있어도 유지 관리가 쉬워지면 좋을 것이라고 생각합니다.Spring MVC로 JSP 동작 전환

이것은 좋은 아이디어입니까? 그렇다면, 내 문제를 해결하는 데 도움이 : 기본 목록에서 하나 정상이 : 나는 모든 목록 속성을 가진 JSP를 가지고 있지만, 일부는 컨트롤러에서는

<c:if test="${BooleanAttributeFromController}"></c:if> 

내부에

을, 나는 두 가지 매핑이 사용자에게는 액세스 권한이 있고 관리자 목록에는 관리자 만 액세스 할 수 있습니다. 이 두 번째 목록에서 사용자가 관리자 권한 (이중 보안)을 갖고 있으면이 부울 속성이 전달됩니다.

model.addAttribute("BooleanAttributeFromController", new Boolean(true)); 

하지만 관리자 목록의 전시 속성을 사용하여 필자는이 사용자가 더 관리자 권한이없는 경우 발생하도록 구성되어으로서의는 리디렉션 올바른 매핑을 사용하지 (목록에게 올바른 방법을로드하는 경우에도).

두 맵핑은 동일한 jsp로 리다이렉션되며, 추가 속성 만 사용됩니다. 왜 작동하지 않습니까? 아래

더 전체 코드 :

컨트롤러 :

@RequestMapping("getAnalysisList") 
    public String listAnalysis(Model model, HttpSession session){ 
     int userId = Integer.parseInt(session.getAttribute("userId").toString()); 
     List<Analysis> analysisList = dao.getAnalysisListPerUser(userId); 
     model.addAttribute("analysisList", analysisList); 
     return "analysis/analysisList"; 
    } 

    @RequestMapping("listAllAnalysis") 
    public String listAllAnalysis(Model model, HttpSession session){ 
     int userId = Integer.parseInt(session.getAttribute("userId").toString()); 
     if(userDao.isAdmin(userId)){ 
      List<Analysis> analysisList = dao.getAnalysisListAdmin(); 
      model.addAttribute("analysisList", analysisList); 
      model.addAttribute("completeList", new Boolean(true)); 
      return "analysis/analysisList"; 
     }else{ 
      return "redirect:index"; 
     } 
    } 

JSP 테이블 목록 :

<table> 
     <tr> 
      <th><spring:message code="analysisList.Filename"></spring:message></th> 
      <th><spring:message code="analysisList.DateInserted"></spring:message></th> 
      <c:if test="${empty completeList}"> 
<!--   ToDo: Find how to toggle special list for admin type --> 
       <th><spring:message code="analysisList.User" /></th> 
       <th><spring:message code="analysisList.Expiration" /></th> 
       <th><spring:message code="analysisList.Flag" /></th> 
      </c:if> 
      <th><spring:message code="analysisList.ReportLink" /></th> 
     </tr> 
</table> 

답변

1

JSP는 작은 알려진 메커니즘을 가지고 태그 파일 (Tag Files)은 페이지의 일부를 구성 요소 라이브러리에 추출하고 다른 매개 변수로 호출 할 수 있습니다. 좋아하는 소리가 필요할 수 있습니다.

JEE Tutorial 5: Tag Files