[英]include a jsp as a header based on a condition inJSF
我正在使用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>
简短的答案,请使用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了。 有一阵子了。
不要使用Scriptlets 。 曾经
您的menuAssigned
变量仅可通过#{menuAssigned}
在EL中使用。 我建议将您的menuAssigned
变量值与JSP包含文件名对齐。 那你就可以用
<jsp:include page="#{menuAssigned}Header.jsp" />
假设menuAssigned
是XX
,那么它将包括XXHeader.jsp
。
与具体问题无关 ,为什么您显然已经使用了JSF 2.0以及JSP的出色后继产品Facelets(XHTML)时却使用旧版JSP?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.