1

オートコンプリートコンポーネントをマネージド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;
    }
}
4

1 に答える 1

3

コンバーターは2つのことを行う必要があります。文字列(ページによって送信される)をpojoのインスタンスに変換することと、pojoのインスタンスを文字列に変換してページに表示できるようにすることです。

getAsStringメソッドでplaceの主キーを返すことでこれを実現できます。次に、getAsObjectメソッドで、選択したアイテムの主キーを含む文字列を取得し、データベースに関連付けられたレコードをクエリします。これを機能させるには、コンバーターからクエリサービスにアクセスする必要があります。それを試してみて、どうなるか教えてください。

于 2013-01-23T03:06:03.023 に答える