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;
}