次のコードに問題があります。
<rich:select value="#{MyBean.selectedItems}" id="mss" defaultLabel="select" >
<f:selectItems value="#{MyBean.availableItemList()}var="selectedItem" />
<f:validator validatorId="util.MyValidator"/>
</rich:select>
初めてページをロードしたときはうまくいきますが、次のページから戻ると失敗し、リストが空のように見えます。availableItemList() メソッドは次のとおりです。
public List<String> availableItemList()
throws NoSuchMethodException, IllegalAccessException{
try {
return ( (ConcurrentHashMap<String,MyData>)MyDataHandler.getFileData()).get(network).getItemList();
} catch(NullPointerException e) {
List<String> tmp = new ArrayList<String>();
tmp.add("asd");
return tmp;
}
私が言ったように、最初にページをロードしたときはうまく機能しますが(データハンドラーから選択したネットワークに関連するアイテムを返します)、試行部分をナビゲートした後、失敗したようで、キャッチに例外メッセージがスローされます。他のページからブラウザの戻るボタンを押すだけで、アイテムを表示して選択できますが、コミットボタンを押すと失敗し、キャッチパーツにエラーメッセージが表示されます。
私はそれを明確にしようとしますが、会社の秘密とブラブラのためにコード全体をコピーすることはできません. そのため、データハンドラーは XML ファイル (ネットワーク データを含む) からデータを取得し、それを
protected static ConcurrentHashMap<String,?> fileData
ゲッターとセッターもあります:
public static ConcurrentHashMap<String, ?> getFileData() {
return NetworkDataHandler.fileData;
}
ネットワーク データは次のようになります。
private String networkName;
private List<String> mssList;
ゲッターとセッターで。