微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

Expected a child component type of UISelectItem/UISelectItems for
component type javax.faces.SelectOne(myId). Found 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.它被清空了.但是在调试时我可以看到相应的属性填充了条目.

解决方法:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐