0

次のコードに問題があります。

<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;

ゲッターとセッターで。

4

0 に答える 0