【发布时间】:2018-06-26 19:46:29
【问题描述】:
我正在使用 bootsFaces 中的 selectMultiMenu,初始值显示完美,但在渲染后,组合不会打开新值,如果我在浏览器中检查源代码,它表明 bean 正确加载了值。它只发生在这个 bootsFaces 的元素上,我的项目的其余部分使用 jsf 渲染,ajax 没有问题。 有什么线索吗?谢谢!
<h:form id="form-Principal">
<h:panelGroup id="panel-Principal" layout="block" >
<div class="col-md-12">
<div class="col-md-1">
<label for="servicio" class="control-label">Servicio:</label>
</div>
<div class="col-md-2">
<h:selectOneMenu disabled="#{empty testops.ambiente}" id="servicio" class="combobox form-control" value="#{testops.servicio}" >
<f:selectItem itemValue="" itemLabel="Seleccione..."/>
<f:selectItems value="#{testops.listServicios}" />
<f:ajax event="change" listener="#{testops.obtenerOperaciones}" render="cboperacion" execute="@this"></f:ajax>
</h:selectOneMenu>
<h:message for="servicio" class="error"/>
</div>
<div class="col-md-1">
<label for="operacion" class="control-label">Operación:</label>
</div>
<div class="col-md-2">
<b:selectMultiMenu id="cboperacion" value="#{testops.operacion}" nonSelectedText="Seleccione...">
<f:selectItems value="#{testops.operaciones}"/>
</b:selectMultiMenu>
</div>
<div class="col-md-1">
</div>
<div class="col-md-1">
<f:ajax render=":salida form-Principal:panel-Principal" execute="@form" onevent="loading">
<h:commandLink class="btn btn-danger boton_rojo pull-right" value="Ejecutar" action="#{testops.ejecutarOperaciones()}"></h:commandLink>
</f:ajax>
</div>
</div>
</h:panelGroup>
</h:form>enter code here
【问题讨论】:
-
我猜你说“渲染”是指 AJAX 更新?
-
是的,正如您在代码中看到的,选择第一个组合时,它调用和Ajax渲染第二个。
-
您很可能发现了一个错误。我将尝试尽快重现并解决该错误(但这可能需要几天时间)。同时,尝试更新
cboperación的父级。在您的特定情况下,这是主面板,这可能太多了,因为更新面板会将焦点移动到另一个输入字段。但如果我的理论是正确的,<b:selectMultiMenu />就被正确初始化了。 -
如果是这样,请将
<b:selectMultiMenu>包装在<div jsf:id="dropDownID">中,并在AJAX 请求中更新此<div>。这应该可以解决问题。 -
谢谢!!我会试试你说的,我会告诉你的。
标签: jsf bootsfaces ajax-update