Primefaces自动完成ajax SelectEvent

时间:2018-01-10 21:10:21

标签: ajax primefaces


我是java和primefaces的新手。我在数据表中使用自动完成功能。
使用自动完成功能,我选择产品,使用ajax,在“MovtosBean.UpdatePrice”中更新产品的价格。

在MovtosBean.UpdatePrice中的“item”对象,返回所选产品应返回的“null”值
我在哪里有错误?
感谢您的帮助。

感谢。

package com.siptec.sm_fact.classes;

import com.siptec.sm_fact.entities.Productos;
import com.siptec.smfact.entities.facade.ProductosFacadeLocal;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.inject.New;
import javax.faces.application.FacesMessage;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.component.datatable.DataTable;
import org.primefaces.event.SelectEvent;


@Named
@ViewScoped
public class MovtosBean implements Serializable{


    public void UpdatePrecio(SelectEvent e){
        Object item = e.getObject();
        FacesMessage msg = new FacesMessage("Selected", "Item" + item);
//        Productos p = ((Productos) e.getObject());
//         p.getPrecio();
    }
}

   
    <h:body>
        <h:form>
            <p:dataTable value="#{movtosBean.lstMovimientos}" var="mov" editMode="cell"  rowKey="#{mov.id}" 
                         widgetVar="movProd" editable="true" rowIndexVar="rowIndex">
                <p:column headerText="Id">
                    <h:outputText value="#{mov.id}"/>
                </p:column>
                <p:column headerText="Producto">
                    <h:outputLabel for="idprod" />
                    <p:inplace id="idprod" label="Ingrese productos" effectSpeed="fast" event="click">
                        <p:autoComplete 
                            id="mProductos"
                            value="#{movtosBean.lstproductos}"
                            completeMethod="#{movtosBean.CargaSugerencias(query)}"
                            var="pro"
                            itemValue="#{pro}"
                            itemLabel="#{pro.descripProducto}"
                            converter="omnifaces.SelectItemsConverter"
                            dropdown="false">
                            <p:column>
                                #{pro.codProducto} - #{pro.descripProducto}
                            </p:column>
                            <p:ajax event="itemSelect" listener="#{movtosBean.UpdatePrecio}"
                                       update="mPrecio">
                            </p:ajax>
                        </p:autoComplete>
                    </p:inplace>
                </p:column>
                
            </p:dataTable>
        </h:form>
    </h:body>
</html>

1 个答案:

答案 0 :(得分:0)

converter="omnifaces.SelectItemsConverter"在组件的f:selectItems中查找项目。那不是p:autoComplete - 它没有f:selectItems。你需要提供一个不同的转换器(看起来你在这里有实体,所以创建一个转换器,它执行EntityManager#find或getReference)。或者没有转换器,如果你只是想要字符串。