【问题标题】:include a jsp as a header based on a condition inJSF根据条件在JSF中包含一个jsp作为标题
【发布时间】:2011-11-06 15:32:36
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: java javascript jakarta-ee jsf-2


    【解决方案1】:

    不要使用 Scriptlet。曾经。

    #{menuAssigned} 可以在 EL 中使用您的 menuAssigned 变量。我建议将您的 menuAssigned 变量值与 JSP 包含文件名对齐。然后你就可以使用

    <jsp:include page="#{menuAssigned}Header.jsp" />
    

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


    与具体问题无关,您为什么要使用旧版 JSP,而您显然已经在使用 JSF 2.0 以及 JSP 的出色继任者 Facelets (XHTML)?

    【讨论】:

    • 我认为这会有问题。使用 JSF 动态包含。
    • @Kevin:它有效,与您的回答相反。您似乎几乎没有 JSF+JSP 的实践经验。
    • 谢谢!非常感激。就像我说的,我有使用 facelets 的经验。一大堆。我在这里担心的是 JSP 和 JSF 在某些情况下不能很好地混合。如果您在该页面上更改“menuAssigned”的值,这里可能无法正常工作,因为视图模型需要一定的层次结构。这与你不混合'c:if'标签的原因相同,但我猜你也没有问题?
    • @Kevin:你没说出口。至于可能的混合问题,只有当 EL 变量存在于 JSF 组件的范围内时,它才会起作用。但在这种特殊情况下,情况并非如此。另请参阅以下内容,了解关于 JSF 组件和基于 JSP 的标签如何混合的外行解释:stackoverflow.com/questions/3442380/…
    • 我在回答中说过。很抱歉不清楚。由于动态包含不同的文件,我并不担心“menuAssigned”的可用性与支持 JSF 的视图一样多。你似乎并不关心这一点,正如我所提到的,我是一个小脸人,所以我相信你是对的。
    【解决方案2】:

    简答,使用 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 的东西了。已经有一段时间了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多