Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF错误“;应为子组件类型。。。发现无效。”;_Java_Ajax_Jsf_Richfaces_Jsf 1.2 - Fatal编程技术网

Java JSF错误“;应为子组件类型。。。发现无效。”;

Java JSF错误“;应为子组件类型。。。发现无效。”;,java,ajax,jsf,richfaces,jsf-1.2,Java,Ajax,Jsf,Richfaces,Jsf 1.2,使用时,在更改下拉框的值时,我总是会遇到以下错误 需要的子组件类型为UISelectItem/UISelectItems 组件类型javax.faces.SelectOne(myId)。结果为空 以下是JSF代码: <h:selectOneMenu id="selectId" valueChangeListener="#{cs.myListener}" value="#{cs.selectList.selectedItem}"> <f:selectItems value="#

使用
时,在更改下拉框的值时,我总是会遇到以下错误

需要的子组件类型为UISelectItem/UISelectItems 组件类型javax.faces.SelectOne(myId)。结果为空

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

的getter在某个点上肯定返回了
null
。这一例外没有其他原因。很可能您的支持bean代码逻辑流是完全错误的


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

这是另一个问题,从技术上讲,应该引入一个新问题。第一步是详细说明“不会刷新”的确切含义。它不是被重新渲染了吗?或者,
getter只是返回一个空列表吗?它被重新呈现,但现在是空的。但是我不知道为什么,因为属性肯定是填充的。所以,您在getter方法上放置了一个断点,它在呈现响应期间返回了一个填充列表?是的。我甚至调试过JSF库。它也被填满了。这只能意味着它实际上根本没有被重新渲染。使用Firebug,您应该能够跟踪HTML DOM树中的更改。