PrimeFaces bileşen kütüphanesini kullandığım projemde autoComplete bileşeninin kullanımında bir problemim var. Yardımcı olmanız dileği ile bu konuyu açıyorum.
Problemim kısaca şöyle.
Servis isminde bean olarak tanımlı olmayan bir entity classım var. Bu classın plaka alanına bağlı, bilgi girişi yapılan formda daha önce kalıcılaştırılmış plaka bilgisinin kullanıcıya gösterilmesini arzu ediyorum.
Konuyla ilgili kodum şöyle.
Code: Select all
<p:autoComplete value="#{servisAdd.selectedServis}" binding="#{servisAdd.plakaText}"
completeMethod="#{servisAdd.completePlaka}" required="true"
requiredMessage="Plaka alanı boş bırakılamaz..."/>
Code: Select all
private Servis selectedServis;
private List<Servis> servisler;
public ServisAdd(){
listDoldur();
em = emf.createEntityManager();
servisler = em.createQuery("SELECT s FROM Servis s WHERE s.fmk=" + frmKod).getResultList();
}
public Servis getSelectedServis() {
return selectedServis;
}
public void setSelectedServis(Servis selectedServis) {
this.selectedServis = selectedServis;
}
public List<Servis> completePlaka(String query) {
List<Servis> oneriler = new ArrayList<Servis>();
for(Servis s : servisler) {
if(s.getPlaka().startsWith(query))
oneriler.add(s);
}
return oneriler;
}
java.lang.ClassCastException: org.pojo.entity.Servis cannot be cast to java.lang.String
Bu hata mesajından anladığım kadarıyla Servis nesnesi String tipine cast edilemiyor.
Dökümanlardan autoComplete metodunun completeMethod attributesuna dönüş tipi Stringden farklı nesneleri de bağlayabildiğimizi anlıyorum.
O halde ben burada nasıl bir yanlışlık yapmış olabilirim?
Saygılarıma.
Serhan ASLAN