0

我有一个非常简单的 xhtml 文件,其中在单击切换按钮时将panelGroup包含 acommandButton添加到页面中,但是动态添加commandButton的内容在单击时无法执行actionlistener

完整代码如下:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:p="http://primefaces.org/ui">

    <h:head>
    </h:head>
    <h:body>
        <h:panelGroup id="checkDyna">
            <h:panelGroup rendered="#{listRetriever.booleanStatus}" >
                <h:form>            
                    <p:commandButton value="check" process="@all" actionListener="#{listRetriever.xx()}"/>
                </h:form>
            </h:panelGroup>
        </h:panelGroup>
        <h:form>
            <p:commandButton value="Toggle" actionListener="#{listRetriever.toggleBooleanStatus()}" update=":checkDyna"/>
        </h:form>

    </h:body>
</html>

@ManagedBean(name = "listRetriever")
@RequestScoped
public class ListRetriever implements Serializable {

    private boolean booleanStatus;        

    public void toggleBooleanStatus(){
        if (!booleanStatus)
            booleanStatus=true;
    }

    public void xx(){
        System.out.println("Invoked***");
    }

    public boolean isBooleanStatus() {
        return booleanStatus;
    }

    public void setBooleanStatus(boolean booleanStatus) {
        this.booleanStatus = booleanStatus;
    }

}

在删除 rendered="#{listRetriever.booleanStatus}" actionlistener 时成功调用。

在制作豆子ViewScoped时,问题也被消除了,但我不想让它比RequestScoped.

4

1 回答 1

0

p:commandButton在一个有条件渲染的面板中这个,当我试图执行actionlistener. 这就是actionlistener没有被处决的原因。

于 2012-06-21T19:12:36.587 回答