2013-02-09 4 views
0

Я новичок в jsf и пытаюсь реализовать блок автозаполнения.Функция не получает вызов в автозаполнении jsf

Итак, вот что я сделал.

home.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich"> 
    <h:form> 
     <rich:autocomplete mode="ajax" layout="table" autocompleteMethod="#{searchCity.searchCityByMatchChar}" autocompleteList="#{searchCity.listOfCity}" 
      var="city" fetchValue="#{city.cityName}"> 
      <rich:column> 
       #{city.cityName} 
      </rich:column> 
     </rich:autocomplete> 
    </h:form> 
</ui:composition> 

SearchCity.java

package com.cheapesto.cheapbilly.model; 

import java.util.ArrayList; 
import java.util.List; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

import com.cheapesto.cheapbilly.dto.City; 


@ManagedBean(name = "searchCity") 
@SessionScoped 
public class SearchCity { 
    private List<City> listOfCity; 
    public List<City> getListOfCity() { 
     return listOfCity; 
    } 

    public void setListOfCity(List<City> listOfCity) { 
     this.listOfCity = listOfCity; 
    } 

    public List<City> searchCityByMatchCharforauto() { 
     City city1 = new City(); 
     city1.setCityId(1l); 
     city1.setCityName("New York"); 

     City city2 = new City(); 
     city2.setCityId(1l); 
     city2.setCityName("New Jesrsey"); 

     City city3 = new City(); 
     city3.setCityId(1l); 
     city3.setCityName("Seattle"); 

     List<City> listOfCity = new ArrayList<City>(); 
     listOfCity.add(city1); 
     listOfCity.add(city2); 
     listOfCity.add(city3); 

     return listOfCity; 
    } 
} 

лица-config.xml

<faces-config 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" 
    version="2.0"> 


</faces-config> 

Я получаю сообщение об ошибке, как:

SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/MyFirstFaces] threw exception [/faces/home.xhtml: Property 'searchCityByMatchChar' not found on type com.cheapesto.cheapbilly.model.SearchCity] with root cause 
javax.el.ELException: /faces/home.xhtml: Property 'searchCityByMatchChar' not found on type com.cheapesto.cheapbilly.model.SearchCity 
    at com.sun.faces.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:91) 
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:78) 
    at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:179) 
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:164) 

Я не понимаю, почему он рассматривает метод как свойство. может кто-то, пожалуйста, помогите мне с правильными изменениями и объяснениями.

ответ

2

RichFaces установлен неправильно. Ваш RichFaces тег в основном интерпретируется как обычный текст, который узнаваем как UIInstructions в трассировке стека:

at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:78) 

Это по существу та же проблема, когда вы могли бы сделать, например,

<p>#{searchCity.searchCityByMatchChar}</p> 

EL в тексте шаблона по умолчанию resovled как выражение значения свойства, требующего метода геттера.

Проверьте правильность установки RichFaces. Это 7 файлов JAR в /WEB-INF/lib.

+0

hey BalusC, спасибо, человек ... это была глупая ошибка, и ваша помощь очень помогла. еще раз большое спасибо. – Jayesh

0

Существует не метод searchCityByMatchChar на ваш bean-компонент. Это называется searchCityByMatchCharforauto. Это может быть основной причиной вашей ошибки.

+0

Эй Chkal, я изменил общественный Список searchCityByMatchCharforauto() {...} и autocompleteMethod = "# {searchCity.searchCityByMatchCharforauto}", но та же ошибка все еще сохраняются javax.el.ELException: /faces/home.xhtml: Недвижимость 'searchCityByMatchCharforauto' не найден по типу com.cheapesto.cheapbilly.model.SearchCity – Jayesh

Смежные вопросы