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
Session 会话范围的托管bean和actionListener_Session_Jsf - Fatal编程技术网

Session 会话范围的托管bean和actionListener

Session 会话范围的托管bean和actionListener,session,jsf,Session,Jsf,我想用同一个按钮在不同的托管bean上执行多个操作,一个是作用域会话,另一个是请求。在我的例子中,我对这两个都使用相同的bean index.xhtml <h:form> <p:commandButton image="ui-icon ui-icon-notice" action="#{controller.inc()}" update="result"> <f:actionListener type="control

我想用同一个按钮在不同的托管bean上执行多个操作,一个是作用域会话,另一个是请求。在我的例子中,我对这两个都使用相同的bean

index.xhtml

    <h:form>
        <p:commandButton image="ui-icon ui-icon-notice" action="#{controller.inc()}" update="result">
            <f:actionListener type="controller.Controller" />
        </p:commandButton>
    </h:form>

    <p:panel id="result">
        #{controller.count}
    </p:panel>
当我按下按钮时,计数增加1,而不是1001,并创建一个新bean。我做错了什么


谢谢。

这是意料之中的行为。
在每个声明上创建并获取自己的bean实例。它不重用由JSF管理的同一会话范围bean

您需要使用
binding
来绑定到已经创建的会话范围的bean实例

<f:actionListener binding="#{controller}" />

<f:actionListener binding="#{controller}" />