0

出现错误的代码如下:

<h:form>
    <rich:select defaultLabel="Seleccionar región" value="#{StaticInfo.regionElegida}">
        <f:selectItems value="#{StaticInfo.regiones.entrySet()}" var="region" itemValue="#{region.key}" itemLabel="#{region.value}" />
        <a4j:ajax event="change" render="provs" listener="#{StaticInfo.updateProvincias}" />
    </rich:select>
    <rich:select id="provs" defaultLabel="Seleccionar provincia" value="#{StaticInfo.provinciaElegida}">
        <f:selectItems value="#{StaticInfo.provincias.entrySet()}" var="prov" itemValue="#{prov.key}" itemLabel="#{prov.value}" />
        <a4j:ajax event="change" render="texto" />
    </rich:select>
    <h:outputText value="#{StaticInfo.provinciaElegida)}" id="texto" />
</h:form>

列表正确显示项目,并且 bean 具有所需的 getter 和 setter provinciaElegida。现在,第二个选择的项目将取决于第一个选择的选择。由于某种原因, outputText 元素没有显示任何结果。

谢谢你。

4

2 回答 2

0

而不是<a4j:ajax event="change" render="texto" />,您可以尝试使用<a4j:support/>

<h:selectOneMenu id="selectOneMenu"  value="#{Bean1.val1}" >
    <f:selectItems value="#{Bean1.selectItems}"/>
    <a4j:support event="onchange" action="#{Bean1.onSelectOneMenuChange}" reRender="textbox1"   />
 </h:selectOneMenu>

<h:inputText id="textbox1" value="#{Bean1.textbox1}"> </h:inputText>
于 2012-08-01T05:34:22.873 回答
0

只是为了不让我回答这个问题......

问题是 bean 是 Request 范围内的。正如 Luiggi 解释的那样:

当 ManagedBean 为 RequestScoped 时,将为每个请求(甚至是 ajax 请求!)创建它。如果您的托管 bean 必须在同一个视图中处理多个请求,则它必须具有 ViewScoped。

我试图在一个视图中提交多个请求,因此“重置”了 bean 并有效地杀死了它应该做的事情。当我将 bean 更改为 @ViewScope 时,它​​运行良好。

于 2012-08-01T06:22:14.077 回答