当我在 primefaces 中选择一个 selectonemenu 项目时,命令按钮不起作用
commandbutton doesnt work when i choose a selectonemenu item in primefaces
当我在 selectonemenu 中选择一个项目时,我的命令按钮的 actionlistener 不起作用,并且在我加载页面之前它永远不会起作用,这是我的代码
<h:form id="form2" >
<div class="col-lg-6" >
<p:panelGrid columns="3">
<p:outputLabel value="plato" />
<p:selectOneMenu value="#{salonController.productoSeleccionado}" filter="true" filterMatchMode="contains" effect="fade">
<f:selectItem itemLabel="seleccione un producto" itemValue="" />
<f:selectItems value="#{salonController.listaProductos}" var="item" itemValue="#{item}" itemLabel="#{item.nombre}" />
</p:selectOneMenu>
<p:commandButton value="añadir" update="dtProductos" actionListener="#{salonController.addProducto()}" />
</p:panelGrid>
</div>
<div class="col-lg-6">
<p:dataTable id="dtProductos" value="#{salonController.listaProductosEscogidos}" var="dtProd" emptyMessage="aun no se añadieron productos" >
<p:column>
<p:outputLabel value="#{dtProd.nombre}" />
</p:column>
<p:column style="width:130px">
<p:commandButton class="btn-success" actionListener="#{salonController.quitarProducto(dtProd)}"
icon="ui-icon-trash" update="dtProductos" value="eliminar" title="Quitar producto"/>
</p:column>
</p:dataTable>
</div>
</h:form>
当我调试控制器时,在 select 一个项目之后 selectonemenu 我的方法 addProduto() 从来没有 运行s,在此之前我的方法 运行正常。
@Named("salonController")
@ViewScoped
public class salonController implements Serializable {
@PostConstruct
public void init() {
this.productoSeleccionado = new Productos();
}
public Productos getProductoSeleccionado() {
return productoSeleccionado;
}
public void setProductoSeleccionado(Productos productoSeleccionado) {
this.productoSeleccionado = productoSeleccionado;
}
public void quitarProducto(Productos producto) {
this.listaProductosEscogidos.remove(producto);
}
public void addProducto() {
this.listaProductosEscogidos.add(productoSeleccionado);
}
}
请帮帮我
您在表格中的第一个 div 有一些问题;例如 p:commandButton
value="añadir"
应该有这个 actionListener="#{salonController.addProducto}
(调用方法 addProducto
没有括号) 其次,根据 Primefaces SelectOneMenu,您的 advanced selectOneMenu 应该如下所示:
<h:form id="form2" >
<div class="col-lg-6" >
<p:panelGrid columns="3">
<p:outputLabel for="advanced" value="plato" />
<p:selectOneMenu id="advanced" var="t" value="#{salonController.productoSeleccionado}" filter="true" filterMatchMode="contains" effect="fade">
<f:selectItems value="#{salonController.listaProductos}" var="item" itemValue="#{item}" itemLabel="#{item.nombre}" />
<p:column>
<h:outputText value="#{t.nombre}" />
</p:column>
</p:selectOneMenu>
<p:commandButton value="añadir" update="dtProductos" actionListener="#{salonController.addProducto}" />
</p:panelGrid>
</div>
</h:form>
当我在 selectonemenu 中选择一个项目时,我的命令按钮的 actionlistener 不起作用,并且在我加载页面之前它永远不会起作用,这是我的代码
<h:form id="form2" >
<div class="col-lg-6" >
<p:panelGrid columns="3">
<p:outputLabel value="plato" />
<p:selectOneMenu value="#{salonController.productoSeleccionado}" filter="true" filterMatchMode="contains" effect="fade">
<f:selectItem itemLabel="seleccione un producto" itemValue="" />
<f:selectItems value="#{salonController.listaProductos}" var="item" itemValue="#{item}" itemLabel="#{item.nombre}" />
</p:selectOneMenu>
<p:commandButton value="añadir" update="dtProductos" actionListener="#{salonController.addProducto()}" />
</p:panelGrid>
</div>
<div class="col-lg-6">
<p:dataTable id="dtProductos" value="#{salonController.listaProductosEscogidos}" var="dtProd" emptyMessage="aun no se añadieron productos" >
<p:column>
<p:outputLabel value="#{dtProd.nombre}" />
</p:column>
<p:column style="width:130px">
<p:commandButton class="btn-success" actionListener="#{salonController.quitarProducto(dtProd)}"
icon="ui-icon-trash" update="dtProductos" value="eliminar" title="Quitar producto"/>
</p:column>
</p:dataTable>
</div>
</h:form>
当我调试控制器时,在 select 一个项目之后 selectonemenu 我的方法 addProduto() 从来没有 运行s,在此之前我的方法 运行正常。
@Named("salonController")
@ViewScoped
public class salonController implements Serializable {
@PostConstruct
public void init() {
this.productoSeleccionado = new Productos();
}
public Productos getProductoSeleccionado() {
return productoSeleccionado;
}
public void setProductoSeleccionado(Productos productoSeleccionado) {
this.productoSeleccionado = productoSeleccionado;
}
public void quitarProducto(Productos producto) {
this.listaProductosEscogidos.remove(producto);
}
public void addProducto() {
this.listaProductosEscogidos.add(productoSeleccionado);
}
}
请帮帮我
您在表格中的第一个 div 有一些问题;例如 p:commandButton
value="añadir"
应该有这个 actionListener="#{salonController.addProducto}
(调用方法 addProducto
没有括号) 其次,根据 Primefaces SelectOneMenu,您的 advanced selectOneMenu 应该如下所示:
<h:form id="form2" >
<div class="col-lg-6" >
<p:panelGrid columns="3">
<p:outputLabel for="advanced" value="plato" />
<p:selectOneMenu id="advanced" var="t" value="#{salonController.productoSeleccionado}" filter="true" filterMatchMode="contains" effect="fade">
<f:selectItems value="#{salonController.listaProductos}" var="item" itemValue="#{item}" itemLabel="#{item.nombre}" />
<p:column>
<h:outputText value="#{t.nombre}" />
</p:column>
</p:selectOneMenu>
<p:commandButton value="añadir" update="dtProductos" actionListener="#{salonController.addProducto}" />
</p:panelGrid>
</div>
</h:form>