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

正如我所说,当我第一次加载页面时它运行良好(它从数据处理程序返回与所选网络相关的项目)但在导航后尝试部分似乎失败并且它在捕获中抛出异常消息。如果我只是从另一个页面按下浏览器的后退按钮,我可以看到这些项目并选择一个,但是当我按下提交按钮时它会失败并且捕获部分再次出现错误消息。

我会尽量说清楚,但由于公司机密和废话,我无法复制整个代码。因此,Datahandler 从 XML 文件(包含网络数据)中获取数据并将其存储在

 protected static ConcurrentHashMap<String,?> fileData

它也有 getter 和 setter:

 public static ConcurrentHashMap<String, ?> getFileData() {
        return NetworkDataHandler.fileData;
    }

网络数据如下所示:

private String networkName;
private List<String> mssList;

与吸气剂和二传手。

4

0 回答 0