オートコンプリートコンポーネントをマネージドBeanに接続し、それをサービスレイヤーに接続して、データベースからリストを取得します。ショーケースやオンラインで見つけたその他のものを参照しようとしていますが、オートコンプリートを機能させることができません。キャスト例外があったので、コンバーターが必要なようでした。しかし、コンバーターの作成に問題があります。私はすべてがどのように渡されるかについて混乱しています。
<p:autoComplete id="placesSearchBar" value="#{searchBarBean.place}" completeMethod="#{searchBarBean.findSimilarPlaces}"
var="Place" itemLabel="#{Place.name}" itemValue="#{Place}" converter="PlaceConverter" />
public class SearchBarBean
{
private Place place;
private SearchQueryService searchQueryService;
private Criteria criteria;
/**
* @return the place
*/
public Place getPlace() {
return place;
}
/**
* @param place the place to set
*/
public void setPlace(Place place) {
this.place = place;
}
/**
* @return the searchQueryService
*/
public SearchQueryService getSearchQueryService() {
return searchQueryService;
}
/**
* @param searchQueryService the searchQueryService to set
*/
public void setSearchQueryService(SearchQueryService searchQueryService) {
this.searchQueryService = searchQueryService;
}
/**
* @return the criteria
*/
public Criteria getCriteria() {
return criteria;
}
/**
* @param criteria the criteria to set
*/
public void setCriteria(Criteria criteria) {
this.criteria = criteria;
}
public List<Place> findSimilarPlaces(String query)
{
getCriteria().setName(query);
List<Place> places = getSearchQueryService().findPlaces(criteria);
return places;
}
}
public class PlaceConverter implements Converter
{
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String submittedValue) {
SearchBarBean searchBarBean = new SearchBarBean();
return null;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
return null;
}
}