我使用p:accordionPanel
代替p:dataTable
。每次更改选项卡时,我都想重置控制器中活动选项卡的实体ID。 IOW,如果accordionPanel中的选项卡对应ID为1,2,3的实体,当我选择一个时,我希望控制器中的activeEntityID变量重置为相应的ID:
<p:accordionPanel value="#{litigController.appealsForCase}" var="appeal">
<p:ajax event="tabChange" listener="#{litigController.setSelectedAppeal}"/>
<p:tab id="#{appeal.appealID}" title="Appellate Court No #{appeal.appelateCourtNo}">
控制器方法:
public void setSelectedAppeal(TabChangeEvent event) {
this.activeAppealID = event.getTab().getId();
System.out.println("tab change for appealID " + this.activeAppealID);
}
但是,我得到IllegalArgumentException
:
java.lang.IllegalArgumentException: Empty id attribute is not allowed
如何在accordionPanel和控制器中的每个标签之间链接标识。我尝试在this example之后对我的代码进行建模,但是他们的示例很差,因为它使用标签标题而不是id。
答案 0 :(得分:1)
您不能以这种方式在id属性中使用EL。 JSF不允许这样做。在视图构建期间,id属性应该可用,但在视图渲染时评估EL。这太晚了,所以在检查id时,它是空的。
另外看看这个: Using id="#{...}" causes java.lang.IllegalArgumentException: Empty id attribute is not allowed