にfaceletコード:JSFのF:リストのエラーを使用して選択項目
<h:selectOneMenu id = "country" label = "country" value = "#{beanController.countryResidence}">
<f:selectItems value = "#{countries.countries}" />
</h:selectOneMenu>
豆コード:
@ManagedBean(eager=true, name = "countries")
@ApplicationScoped
public class CountriesConstants {
private List<SelectItem> countries;
public CountriesConstants(){
countries.add(new SelectItem("DE", "Germany"));
countries.add(new SelectItem("JA", "Japan"));
countries.add(new SelectItem("RU", "Russia"));
countries.add(new SelectItem("US", "United States"));
}
public List<SelectItem> getCountries() {
return countries;
}
public void setCountries(List<SelectItem> countries) {
this.countries = countries;
}
}
エラー
SEVERE:例外アプリ
のロード中SEVERE: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: com.mysite.util.CountriesConstants.
私はいくつかのチュートリアルを順を追って説明しましたが、このエラーが続いています。リストを静的にして静的ブロックの値を初期化しようとしましたが、同じエラーが発生します。
EDIT:
新しい豆コード
@ManagedBean(eager=true, name="constants")
@ApplicationScoped
public class Constants {
public static final String VALIDATE_DETAILED = "detailed";
public static final List<SelectItem> countries;
static{
countries = new ArrayList<SelectItem>();
countries.add(new SelectItem("DE", "Germany"));
countries.add(new SelectItem("JA", "Japan"));
countries.add(new SelectItem("RU", "Russia"));
countries.add(new SelectItem("US", "United States"));
}
public List<SelectItem> getCountries() {
return countries;
}
}
これが動作しているようですが、私はそれが奇妙な私は非静的メソッドと静的属性にアクセスできることを見つけます。 getCOuntries()メソッドを削除すると、の国属性が存在しないというエラーが発生します。がスローされます。あなたの豆のコンストラクタで
例外を取得するときは、常にスタックトレースの一番下の部分を見てください。非常に自己説明的な 'NullPointerException'があります。 – BalusC