我正在使用JSF-2.0,我正在尝试将jsp包含为我当前jsp的标头。但是我想要的是包含的jsp应该根据登录凭据进行更改。 更清楚......取决于登录我的应用程序的人,标题菜单(包括jsp)应该是不同的。我尝试以下面的方式实现,但它没有工作..任何帮助将不胜感激
<html>
<head></head>
<body>
<%
String menuHeader = (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("menuAssigned");
if (menuHeader.equals("XX")){ %>
<f:view> <jsp:include page="XHeader.jsp" /> </f:view>
<% }else if(menuHeader.equals("YY")){ %>
<f:view> <jsp:include page="YHeader.jsp" />
<%}%>
---
</f:view>
</body>
</html>
答案 0 :(得分:0)
简短回答,使用EITHER JSP或JSF流控制。不要混合太多。
<html>
<head></head>
<body>
<f:view>
<h:panelGroup rendered="#{menuHeader == 'XX'}">
<%@include file=”XHeader.jsp" %>
</h:panelGroup>
<h:panelGroup rendered="#{menuHeader == 'YY'}">
<%@include file=”YHeader.jsp" %>
</h:panelGroup>
</f:view>
</body>
</html>
也许静态包括?同样,我已经使用了几年JSF的facelets。不习惯JSP的东西了。已经有一段时间了。
答案 1 :(得分:0)
不要使用 Scriptlets 。永远。
您的menuAssigned
变量仅在#{menuAssigned}
的EL中可用。我建议将menuAssigned
变量值与JSP包含文件名对齐。然后你可以使用
<jsp:include page="#{menuAssigned}Header.jsp" />
想象一下,menuAssigned
为XX
,然后会包含XXHeader.jsp
。
无关,你为什么要使用遗留JSP,而你显然已经在JSF 2.0上出现了JSP的强大后继Facelets(XHTML)? / p>