Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jsf在更新ajax后返回一个对象而不是我的对象_Ajax_Jsf - Fatal编程技术网

jsf在更新ajax后返回一个对象而不是我的对象

jsf在更新ajax后返回一个对象而不是我的对象,ajax,jsf,Ajax,Jsf,我的表格有问题,我解释: 我希望当用户选择客户时,联系人列表会更新为与所选客户对应的新联系人列表。 我的自动完成功能很好。 我的表格: 我的客户转换器工作。 我的联系人: public List<Contact> getByClient(Long idClient){ List<Contact> contacts = new ArrayList<Contact>(); Query query = em.createNativeQuery("SE

我的表格有问题,我解释: 我希望当用户选择客户时,联系人列表会更新为与所选客户对应的新联系人列表。 我的自动完成功能很好。 我的表格:

我的客户转换器工作。 我的联系人:

public List<Contact> getByClient(Long idClient){
    List<Contact> contacts = new ArrayList<Contact>();
    Query query = em.createNativeQuery("SELECT * FROM Contact WHERE client_id = ?client_id");
    query.setParameter(PARAM_IDCLIENT, idClient);
    try{
        contacts = (List<Contact>) query.getResultList();
    }catch(NoResultException e){
        contacts.clear();
        Contact emptyList = new Contact();
        emptyList.setLastName("Aucune donnée");
        contacts.add(emptyList);
    }   
    return contacts;
}

public Contact getByContactName(String lastName){
    Query query = em.createQuery("SELECT e FROM Contact e WHERE e.lastName = :lastName");
    query.setParameter(PARAM_LASTNAME, lastName);
    return (Contact) query.getSingleResult();
}

当我不使用contactconverter时,我的SelectOne菜单会显示对象的ref,如[Ljava.lang.Object;@20c5997e

您的问题在getAsString方法中,因此请替换:

@Override
public String getAsString(FacesContext fc, UIComponent uic, Object value) {
    if (value == null || value.equals("")) { 
        return "";  
    } else { 
        return ((Contact) value).getLastName();
    }
}
有了这些,再看看结果:

@Override
public String getAsString(FacesContext fc, UIComponent uic, Object value) {

        return ((Contact) value).getLastName();

}  

我已经解决了我的问题, 我用createNativeQuery代替createQuery,他无法返回对象联系人 错误在这里:

public List<Contact> getByClient(Client client){
    List<Contact> contacts = new ArrayList<Contact>();
    Query query = em.createQuery("SELECT c FROM Contact c WHERE c.client = :client_id");
    query.setParameter(PARAM_IDCLIENT, client);
    try{
        contacts = (List<Contact>) query.getResultList();
    }catch(NoResultException e){
        contacts = null;
        System.out.println("erruer lors de la recup des contacts");
    }
    return contacts;
}

我已经尝试过了,我得到了同样的消息:您能确保您对converter类的导入看起来像这样吗:import javax.faces.convert.converter;import javax.faces.convert.FacesConverter;是的,它是:import javax.faces.converter;import javax.faces.convert.converter;在getAsString方法中转换返回res结果即使getLastName返回字符串,也要尝试返回字符串。valueOfContact value.getLastName;我已经尝试过了,寻求帮助:2014-08-12T16:56:07.751+0200 |避免:StandardWrapperValve[Faces Servlet]:Servlet.service for Servlet Faces Servlet引发异常java.lang.IllegalStateException:CDATA标记不能嵌套在com.sun.Faces.renderkit.html\u basic.HtmlResponseWriter.startCDATAHtmlResponseWriter.java:681
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to ac.imagine.beans.entities.Contact
at ac.imagine.beans.managed.ContactConverter.getAsString(ContactConverter.java:50)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:521)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:534)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:794)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:847)
at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:297)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:924)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
@Override
public String getAsString(FacesContext fc, UIComponent uic, Object value) {
    if (value == null || value.equals("")) { 
        return "";  
    } else { 
        return ((Contact) value).getLastName();
    }
}
@Override
public String getAsString(FacesContext fc, UIComponent uic, Object value) {

        return ((Contact) value).getLastName();

}  
public List<Contact> getByClient(Client client){
    List<Contact> contacts = new ArrayList<Contact>();
    Query query = em.createQuery("SELECT c FROM Contact c WHERE c.client = :client_id");
    query.setParameter(PARAM_IDCLIENT, client);
    try{
        contacts = (List<Contact>) query.getResultList();
    }catch(NoResultException e){
        contacts = null;
        System.out.println("erruer lors de la recup des contacts");
    }
    return contacts;
}