から働いていないaddress.jarJSF 2.0コンバータは、私がSelectOneMenuコンポーネントで国を選択するには、カスタムコンバータを持って、別のjarファイル
@FacesConverter(value="CountryConverter", forClass=Country.class)
public class CountryConverter implements Converter {
private CountryBean countryBean = CountryBean.getCountryService();
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return countryBean.find(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null)
return ((Country)value).getcc_fips();
else
return null;
}
そして、これは、XHTMLでありますテキスト:
ファイル:プロジェクトルート
<h:selectOneMenu id="country" value="#{cc.attrs.addrEntity.country}">
<f:selectItem itemLabel="Please select one..."
noSelectionOption="true" />
<f:selectItems value="#{cc.attrs.addrBean.countries}"
var="model"
itemLabel="#{model.name}"
itemValue="#{model}"
noSelectionValue="“no selection”"/>
<f:converter ConverterId="CountryConverter"/>
</h:selectOneMenu>
"address.jar"ファイルにコンバータがあり、アドレスを書き込むためにページを開くと、"式エラー:MyCustomCoverterという名前のオブジェクトが見つかりません"と応答します。。たとえxhtmlファイルがあるプロジェクトにコンバータをコピーしても、それはうまくいきます。これを解決するために私は何ができますか?
分離されたjarファイルでは機能しないのはなぜですか?
ありがとうございました。
完璧、それは非常にうまく動作します。ありがとう! –
ようこそ。 – BalusC
さらに重要な点の1つは、JARはWAR(web-application)の** lib-directory **になければならないということです。 WARを持つEARがあり、コンバータを持つJARがEARにのみ存在し、WARのlibにない場合、JSFはコンバータを検出しません。問題の別の詳細な説明については、[この回答](http://stackoverflow.com/questions/2987266/why-doesnt-jsf-2-0-ri-mojarra-scan-my-class-annotations)も参照してください。 –