小编Thz*_*Chz的帖子

会话范围的托管bean和actionListener

我想在不同的托管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>
Run Code Online (Sandbox Code Playgroud)

controller.Controller.java

@Named(value = "controller")
@SessionScoped
public class Controller implements ActionListener, Serializable
{
    int count = 0;

    public Controller(){
        System.out.println("new");
    }

    public void inc(){
        count += 1;
    }

    public int getCount(){
        return count;
    }

    @Override
    public void processAction(ActionEvent event) throws AbortProcessingException{
        count += 1000;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我按下按钮时,计数增加1而不是1001,并创建一个新的bean.我做错了什么 ?

谢谢.

session jsf

6
推荐指数
1
解决办法
1769
查看次数

标签 统计

jsf ×1

session ×1