使用Spring MVC切换JSP行为

时间:2016-10-04 20:37:50

标签: jsp spring-mvc

我打算为两种类型的列表使用一个JSP:一个具有管理员字段,另一个不具备。但我认为,如果我只有一个列表可以相应地将行为切换到请求列表的用户,这样会更好。

这是一个好主意吗?如果是这样,请帮我解决我的问题:

我有一个包含所有列表属性的JSP,但有些属于

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

在控制器中,我有两个映射:一个来自默认列表,普通用户确实有访问权限,另一个用于管理员列表,只有管理员才能访问。在第二个列表中,如果用户具有admin rigths(双重安全性),则传递此布尔属性。我正在使用

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 个答案:

答案 0 :(得分:1)

JSP有一个名为Tag Files的鲜为人知的机制,您可以在其中将页面的一部分提取到组件库,并使用不同的参数调用它。这听起来可能就是你所需要的:

JEE Tutorial 5: Tag Files