在`<f:actionlistener>`添加后,`ViewScoped` bean被重新创建?</f:actionlistener>

时间:2013-05-20 11:59:11

标签: java jsf jsf-2 view-scope

我的JSF辅助bean是ViewScoped 由于我添加了另一个动作侦听器,即使视图没有改变,也会重新创建bean。

@ManagedBean (name="EncryptionBean")
@ViewScoped
public class EncryptionBean extends ClientBeanBase implements Serializable, ActionListener 
{
    .
    .
    .

    @Override
    public void processAction(ActionEvent arg0) throws AbortProcessingException 
    {
       refresh();
    }
}

HTML

<p:commandButton value="OK" type="submit" actionListener="#{FileSelectBean.actionOk}" oncomplete="dlgFileSelect.hide();" update=":formEncryptionDialog,:formTranscodingPage:streamInfoId" styleClass="buttonOK">        
    <f:actionListener type="com.company.rews.webclient.beans.EncryptionBean" />
</p:commandButton>

当我按下OK按钮时,我不希望再次创建bean,因为它是ViewScoped,但是它被重新创建(构造函数被调用)并且我松了一些变量。当我删除<f:actionListener>行时,不会在OK上重新创建。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

在这里找到答案: Session scoped managed bean and actionListener

而不是type需要使用binding

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