我正在尝试根据查询字符串的存在或不存在查询字符串来动态呈现一些组合/模板。例如:
本地主机:9080/myWonderfulApp/test.xhtml?foo=bar
这行得通,A.xhtml 被拉进来。
本地主机:9080/myWonderfulApp/test.xhtml
这不起作用,B.xhtml 不会被拉入。
我遇到了缺少查询字符串部分的问题。当我传递 ?foo=bar 时,我可以渲染 A.xhtml,但是当我没有查询字符串时,我似乎无法渲染 B.xhtml。我尝试了一些变化,我最初认为 #{param['foo'] != 'bar' 会起作用,但我认为这不起作用,因为我根本没有 foo 查询参数。我试过检查 param == null 但这也没有用。
是否可以根据 NO 查询字符串设置我的渲染属性?
我不能只为 B.xhtml 设置另一个查询字符串,因为我正在开发一个具有 2 种不同皮肤的旧版应用程序,因此改造所有链接的旧应用程序不是一种选择。新应用将使用查询字符串,旧应用需要在没有查询字符串的情况下获取旧皮肤链接。
<!--This works-->
<h:panelGrid rendered="#{param['foo'] == 'bar' ? true : false}">
<ui:composition template="A.xhtml">...</ui:composition>
</h:panelGrid>
<!--This doesn't work-->
<h:panelGrid rendered="#{param == null ? true : false}">
<ui:composition template="B.xhtml">...</ui:composition>
</h:panelGrid>
这似乎也不起作用:
<h:panelGrid rendered="#{empty facesContext.externalContext.requestParameterMap.foo ? true : false}">