5

当使用RichFaces 示例<a4j:support>中描述的类似内容时,我在更改下拉框的值时总是收到以下错误。

预期组件类型 javax.faces.SelectOne(myId) 的子组件类型为 UISelectItem/UISelectItems。发现为空。

这是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,调用后不会刷新。它被清空了。但是在调试时我可以看到相应的属性充满了条目。

4

1 回答 1

5

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

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

于 2011-11-04T12:17:06.427 回答