JSF错误“预期子组件类型...找到null。”

时间:2011-11-04 12:06:52

标签: java ajax jsf richfaces jsf-1.2

使用RichFaces example中描述的<a4j:support>时,我在更改下拉框的值时总是会收到以下错误。

  

预期UISelectItem / UISelectItems的子组件类型   组件类型javax.faces.SelectOne(myId)。找到null。

这是JSF代码:

<h:selectOneMenu id="selectId" valueChangeListener="#{cs.myListener}" value="#{cs.selectList.selectedItem}">
 <f:selectItems value="#{cs.bundeslandList.selectItems}" />
 <a4j:support event="onchange" reRender="otherFieldId" />
</h:selectOneMenu>

<h:selectOneMenu id="otherFieldId">
 <f:selectItems value="#{cs.bundeslandList.selectOtherField.selectItems}" />
</h:selectOneMenu>

由于cs.bundeslandList.selectOtherField.selectItems至少为空ArrayList,我确定otherFieldId不能为null


我现在已经删除了整个页面,我不再收到错误了。 valueChangeListener被正确调用,不幸的是,调用后otherFieldId将不会刷新。它被清空了。但是在调试时我可以看到相应的属性填充了条目。

1 个答案:

答案 0 :(得分:5)

<f:selectItems value>的吸气者在某些时候肯定会返回null。这个例外没有其他原因。可能你的支持bean代码逻辑流程是完全错误的。

请注意,制作此属性static是一个非常糟糕的主意。它将在整个Web应用程序的所有其他请求之间共享。您希望基于请求或基于最高会话。