Jsf javax.faces.view.facelets.TagAttributeException

Jsf javax.faces.view.facelets.TagAttributeException,jsf,primefaces,Jsf,Primefaces,我正在使用JSF创建一个小应用程序,面对异常,下面是表单的代码 <h:form> <h:selectManyCheckbox value="#{transferMB.selectedItems}"> <f:selectItem itemValue="1" itemLabel="Transfer Status" /> <p:ajax update=":transForm" /> </h:selectManyChec

我正在使用JSF创建一个小应用程序,面对异常,下面是表单的代码

  <h:form>

 <h:selectManyCheckbox value="#{transferMB.selectedItems}">
    <f:selectItem itemValue="1" itemLabel="Transfer Status" />
      <p:ajax update=":transForm" />
 </h:selectManyCheckbox>

</h:form>


异常“javax.faces.view.facelets.TagAttributeException:”

您应该在渲染属性中调用
类布尔值

例如:

<p:panelGroup id="group" rendered="{#bean.isOneSelected}">
...
</p:panelGroup>

<p:panelGroup id="group" rendered="{#bean.isTwoSelected}">
...
</p:panelGroup>

...
...
以及从selectManyMenu获取值。请查收


此外,呈现的标记是一个类似于
布尔值的条件,用于指示是否应显示标记。您不应该需要将参数传递给它。您应该从您那里获得该信息
transferMB

这是对

如前所述,您需要使用EL2.2在EL表达式中传递参数。看来你没用这个

所以我们需要另一种方法来解决这个问题:

<h:form id="transForm">
    <p:panelGrid columns="1" rendered="#{transferMB.transFormEnabled}">
        <h:outputText value="transForm"/>
    </p:panelGrid>
</h:form>
<h:form id="spreadForm">
    <p:panelGrid columns="1" rendered="#{transferMB.spreadFormEnabled}">
        <h:outputText value="spreadForm"/>
    </p:panelGrid>
</h:form>

请参阅上面的帖子,添加代码后是异常iam facing@Josef E.@user3684675是否有其他方法可以获得所需的
值?它可能是从隐藏字段传递给用户的,或者是该用户输入的?因为“rendered”不能将参数传递给它。哦..但是如果不传递,我就无法检查条件,复选框被选中。您的selectmenu中有一个
ajax
标记。使用它来更新bean中相应的值。我将编辑我的答案@user3684675,但当我研究时,我知道“rendered”可以调用其他方法来检查条件。我想可能是jar的问题,但不确定..@Josef E。
public boolean isTransFormEnabled() {
    if (selectedItems.contains("1")) {
        return true;
    } else {
        return false;
    }
}
public boolean isSpreadFormEnabled() {
    if (selectedItems.contains("2")) {
        return true;
    } else {
        return false;
    }
}