Primefaces 自动完成,如何从数据库查询转换对象列表



我让我的自动完成组件连接到我的托管 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;
    }
}

您的转换器必须做两件事:将字符串(由您的页面提交)转换为您的 pojo 实例,并将您的 pojo 实例转换为字符串,以便它可以显示在您的页面上。

您可以通过返回 getAsString 方法中的位置的主键来实现这一点。然后,在 getAsObject 方法中,您将获取包含所选项的主键的字符串,并在数据库中查询关联的记录。为此,您必须能够从转换器访问查询服务。试一试,让我知道它是怎么回事。

相关内容

  • 没有找到相关文章