我打算为两种类型的列表使用一个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>
答案 0 :(得分:1)
JSP有一个名为Tag Files的鲜为人知的机制,您可以在其中将页面的一部分提取到组件库,并使用不同的参数调用它。这听起来可能就是你所需要的: