繁体   English   中英

根据JSF中的条件将jsp包含为标头

[英]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" />

假设menuAssignedXX ,那么它将包括XXHeader.jsp


具体问题无关 ,为什么您显然已经使用了JSF 2.0以及JSP的出色后继产品Facelets(XHTML)时却使用旧版JSP?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM