Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 请求范围bean和生命周期延迟加载_Jsf_Request_Lazy Loading_Managed Bean - Fatal编程技术网

Jsf 请求范围bean和生命周期延迟加载

Jsf 请求范围bean和生命周期延迟加载,jsf,request,lazy-loading,managed-bean,Jsf,Request,Lazy Loading,Managed Bean,我有一个请求作用域bean,它有一个方法来检索一些数据以供显示。 该方法具有多个参数,因此可以在不同的场合,也可以在相同的视图中调用它 JSF: 这当然可以正常工作,但是由于jsf生命周期阶段的原因,该方法被多次调用 对于{bean.data(obj)}的每次使用,我只想访问数据库一次 我尝试使用以下代码进行延迟加载,但这不起作用:现在jsf页面上没有显示任何数据 private Object[] data; public Object[] doSomething(Object arg) {

我有一个请求作用域bean,它有一个方法来检索一些数据以供显示。
该方法具有多个参数,因此可以在不同的场合,也可以在相同的视图中调用它

JSF:

这当然可以正常工作,但是由于jsf生命周期阶段的原因,该方法被多次调用

对于
{bean.data(obj)}
的每次使用,我只想访问数据库一次

我尝试使用以下代码进行延迟加载,但这不起作用:现在jsf页面上没有显示任何数据

private Object[] data;

public Object[] doSomething(Object arg)
{
    if (this.data == null)
        this.data = //hit database or remote server to retrieve data;
    return this.data;
}

由于该方法在一个视图上使用不同的参数被多次调用,因此viewscope是否为宽范围?

映射中获得它

private Map<Object, Object[]> datas = new HashMap<Object, Object[]>();

public Object[] getData(Object arg) {
    Object[] data = datas.get(arg);

    if (data == null) {
        data = //hit database or remote server to retrieve data;
        datas.put(arg, data);
    }

    return data;
}
private Map data=new HashMap();
公共对象[]获取数据(对象参数){
Object[]data=datas.get(arg);
如果(数据==null){
data=//点击数据库或远程服务器检索数据;
数据输入(arg,数据);
}
返回数据;
}
private Object[] data;

public Object[] doSomething(Object arg)
{
    if (this.data == null)
        this.data = //hit database or remote server to retrieve data;
    return this.data;
}
private Map<Object, Object[]> datas = new HashMap<Object, Object[]>();

public Object[] getData(Object arg) {
    Object[] data = datas.get(arg);

    if (data == null) {
        data = //hit database or remote server to retrieve data;
        datas.put(arg, data);
    }

    return data;
}