Jsf EL在c中的表达式:choose,can';我不能让它工作

Jsf EL在c中的表达式:choose,can';我不能让它工作,jsf,jstl,el,Jsf,Jstl,El,我正在尝试这样的东西(JSF2): <p>#{projectPageBean.availableMethods}</p> <c:choose> <c:when test="${projectPageBean.availableMethods == true}"> <p>Abc</p> </c:when> <c:otherwise> <p>Xyz</p>

我正在尝试这样的东西(JSF2):

<p>#{projectPageBean.availableMethods}</p>
<c:choose>
  <c:when test="${projectPageBean.availableMethods == true}">
    <p>Abc</p>
  </c:when>
  <c:otherwise>
    <p>Xyz</p>
  </c:otherwise>
</c:choose> 
但还是一样的问题

首先:

您的具体问题表明
{projectPageBean}
是在视图渲染时设置的,例如定义为
等时会发生这种情况。因此,在视图构建时它是
null

在这种情况下,您不应该使用视图构建时标记来有条件地呈现HTML。您应该改为使用视图呈现时间组件有条件地呈现HTML。作为首选,请使用

{projectPageBean.availableMethods}

Abc

Xyz

顺便说一下,Facelets中不需要在
{}
${}
之间切换。与JSP相反,在Facelets中,
${}
的行为与
#{}
完全相同。为了避免潜在的混乱和维护问题,我建议始终坚持使用
{}

另见:

谢谢!分数在、、内,最后是一个标记!我的回答也适用于
。很抱歉,我的回答有些延迟!谢谢你的解释和建议。现在可以了!
${projectPageBean.availableMethods}
<p>#{projectPageBean.availableMethods}</p>
<ui:fragment rendered="#{projectPageBean.availableMethods}">
    <p>Abc</p>
</ui:fragment>
<ui:fragment rendered="#{not projectPageBean.availableMethods}">
    <p>Xyz</p>
</ui:fragment>