【发布时间】:2017-06-13 19:29:48
【问题描述】:
当我在 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>
当我调试控制器时,在我在 selectonemenu 中选择一个项目后,我的方法 addProduto() 永远不会运行,在此之前我的方法运行正常。
@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);
}
}
请帮帮我
【问题讨论】:
-
你们有 Producto 转换器吗?
-
添加消息组件(并更新它),了解转换器...
标签: jsf primefaces selectonemenu commandbutton