以前はこれが機能していましたが、いくつか変更したため、再び機能させることはできません。ユーザーが何をクリックしたかに応じて、サービス層を使用してデータベースにアクセスし、コンバーター クラスから正しいオブジェクトを取得しようとしています。スプリングを使用して、サービス プロパティをコンバーターに挿入します。デバッグ中に、プロパティが適切に設定されていることがわかります。しかし、getService を呼び出すと、null になります。
@FacesConverter("PlaceConverter")
@SessionScoped public class PlaceConverter は Converter {
private SearchQueryService searchQueryService;
/**
* @return the searchQueryService
*/
public SearchQueryService getSearchQueryService() {
return searchQueryService;
}
/**
* @param searchQueryService the searchQueryService to set
*/
public void setSearchQueryService(SearchQueryService searchQueryService) {
this.searchQueryService = searchQueryService;
}
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String submittedValue) {
try {
Criteria criteria = new Criteria();
criteria.setId(Integer.parseInt(submittedValue));
return getSearchQueryService().findPlaces(criteria).get(0);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
((Place) value).setCategory(" (" + ((Place) value).getCategory() + ")");
return String.valueOf(((Place) value).getPlaceId());
}
}
<bean id="placeConverterBean" class="com.ghghg.converter.PlaceConverter">
<property name="searchQueryService" ref="searchQueryServiceBean" />
</bean>