Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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 2 JSF PrimeFaces ViewScope而不调用init()_Jsf 2_Primefaces_Managed Bean - Fatal编程技术网

Jsf 2 JSF PrimeFaces ViewScope而不调用init()

Jsf 2 JSF PrimeFaces ViewScope而不调用init(),jsf-2,primefaces,managed-bean,Jsf 2,Primefaces,Managed Bean,我在使用PrimeFacesDataTable时遇到了一个问题,jsf将调用我的托管beaninit(),它将从数据库中进行搜索 在我的jsf中,用户可以执行另一个以字符串形式传递参数的搜索 <p:commandButton id="btnChild" type="Submit" icon="ui-icon-plus" styleClass="action-buttons" value="Child" update=":frmSysMenu:messages dtSysMenu" ajax

我在使用PrimeFacesDataTable时遇到了一个问题,jsf将调用我的托管beaninit(),它将从数据库中进行搜索

在我的jsf中,用户可以执行另一个以字符串形式传递参数的搜索

<p:commandButton id="btnChild" type="Submit" icon="ui-icon-plus" styleClass="action-buttons" value="Child" update=":frmSysMenu:messages dtSysMenu" ajax="false" action="#{Controller.doParent('C')}" process="dtSysMenu" />
它将返回到第一个查询。 我还有别的办法吗

RequestScope有帮助吗?

来自规范(或者其他地方,OP没有提到它)

@ViewScoped
只要您在浏览器窗口/选项卡中与相同的JSF视图交互,此范围内的bean就会存在。它得到 根据HTTP请求创建,并在回发到 不同的观点。当你看到它时,它不会立即被摧毁 通过GET请求离开/关闭视图,但在 再也不是通常的方式了。JSF将bean存储在UIViewRoot#getViewMap()中 使用托管bean名称作为密钥,该密钥依次存储在 会议您需要从操作(侦听器)返回null或void 使bean保持活动状态的方法。将此范围用于更复杂的表单 使用ajax、数据表和/或多个渲染/禁用 需要在后续请求中保留其状态的属性 在同一浏览器窗口/选项卡(视图)中


在函数中,我只是将其更改为void,jsf不会再次调用init()。

欢迎使用Stackoverflow!如果你已经解决了你的问题(恭喜),那么请把它作为一个答案贴出来。这有助于其他人快速发现您的问题已经解决。非常感谢!对不起,我是新来的,谢谢你的建议:D可能是
@PostConstruct
@Override
public void init(){
    try {
        doSearch(nodeValue,"root");
        setParentNode(nodeValue);

    } catch (Exception e) {
        addErrorMessage(e.getMessage());
        e.printStackTrace();
       Messages.addGlobalError(e.getMessage());
        LOG.error(e.toString(), e);
    }

}