Jsf 引导面选择不使用ajax渲染的多菜单
我使用的是bootsFaces中的selectMultiMenu,初始值显示得非常完美,但是在呈现新值后,组合不会打开,如果我检查浏览器中的源代码,它会显示bean正确地引导了这些值。这只发生在bootsFaces的元素中,我的项目的其余部分使用jsf呈现,而ajax没有问题。 有线索吗?谢谢Jsf 引导面选择不使用ajax渲染的多菜单,jsf,bootsfaces,ajax-update,Jsf,Bootsfaces,Ajax Update,我使用的是bootsFaces中的selectMultiMenu,初始值显示得非常完美,但是在呈现新值后,组合不会打开,如果我检查浏览器中的源代码,它会显示bean正确地引导了这些值。这只发生在bootsFaces的元素中,我的项目的其余部分使用jsf呈现,而ajax没有问题。 有线索吗?谢谢 <h:form id="form-Principal"> <h:panelGroup id="panel-Principal" layou
<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
服务:
歌剧院:
在这里输入代码
加载:
渲染后,它有不同的值,但combo不显示。
我试图复制您的错误,但没有成功。或者更确切地说:代码按预期工作。
将使用新值更新
我知道这还不是答案。。。我之所以选择答案,是因为这是包含源代码的唯一方法。[/meta]
所以我建议你
- 将下面的示例代码复制到您的项目中,看看是否有效
- 或者你寄给我一个“复制器”,即一个显示问题的小而完整的项目。例如,您可以将Maven项目上载到GitHub。请尽可能减少复制次数。例如,我需要能够在不配置数据库的情况下运行它
empty.xhtml
中package de.beyondjava.jsf.sample.carshop;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class Testops {
private String ambiente = "que";
private List<String> listServicios = new ArrayList<>();
private String operacion;
private List<String> operaciones = new ArrayList<>();
private String servicio;
{
listServicios.add("Servicio 1");
listServicios.add("Servicio 2");
shuffleOperaciones();
}
public void ejecutarOperaciones(Object o) {
}
public String getAmbiente() {
return ambiente;
}
public List<String> getListServicios() {
return listServicios;
}
public String getOperacion() {
return operacion;
}
public List<String> getOperaciones() {
return operaciones;
}
public String getServicio() {
return servicio;
}
public void obtenerOperaciones(Object o) {
shuffleOperaciones();
}
public void setAmbiente(String ambiente) {
this.ambiente = ambiente;
}
public void setListServicios(List<String> listServicios) {
this.listServicios = listServicios;
}
public void setOperacion(String operacion) {
this.operacion = operacion;
}
public void setOperaciones(List<String> operaciones) {
this.operaciones = operaciones;
}
public void setServicio(String servicio) {
this.servicio = servicio;
}
private void shuffleOperaciones() {
operaciones = new ArrayList<>();
for (int i = 0; i < 4; i++) {
operaciones.add("opción " + Math.ceil(Math.random()*1000));
}
}
}
package de.beyondjava.jsf.sample.carshop;
导入java.util.ArrayList;
导入java.util.List;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.SessionScoped;
@ManagedBean
@会议范围
公共类测试操作{
私有字符串ambiente=“que”;
private List listServicios=new ArrayList();
私人字符串操作;
private List operaciones=new ArrayList();
私人字符串服务;
{
列表服务。添加(“服务1”);
列表服务。添加(“服务2”);
ShufflePeraciones();
}
公共无效电子商务运营商(