使用ViewScoped的Primefaces,渲染属性和树

时间:2014-10-24 12:33:54

标签: java jsf-2 primefaces

我有一个很大的问题来控制我的观点。 主要问题是当我使用面板渲染属性时,感觉所有类属性都被重置。

不会调用在此面板字段设置器中提交输入。

调试托管bean,if值的setter也没有被调用。

如果我删除渲染属性,它可以很好地工作。

我还尝试将ViewScoped更改为SessionScoped并采用相同的行为

不要工作

<p:panel rendered="#{plyAudioDir.viewState == 4}">
    <p:commandButton id="btnSalvar" value="Salvar" update="mensagem" 
            actionListener="#{plyAudioDir.newDir}">
    <br/>
    <h:outputLabel for="noAudioDiretorio" value="Nome Diretório" />
    <p:inputText id="dirName" value="#{plyAudioDir.dirName}" />
</p:panel>

WORKS

<p:panel>
    <p:commandButton id="btnSalvar" value="Salvar" update="mensagem" 
            actionListener="#{plyAudioDir.newDir}">
    <br/>
    <h:outputLabel for="noAudioDiretorio" value="Nome Diretório" />
    <p:inputText id="dirName" value="#{plyAudioDir.dirName}" />
</p:panel>

THE WEIRDEST
最奇怪的是我在页面中有一个树组件,如果我从页面中删除树,第一个代码就可以工作。

有什么想法吗?

全页来源

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:pe="http://primefaces.org/ui/extensions">

<h:body id="main-page">

<h:form>
        <p:layout id="pnl">

            <p:layoutUnit position="north" header="Audio Files Manager">

                <br/>
                <p:commandButton value="New Dir" update="panels,pnl-unit-header">

                    <f:setPropertyActionListener target="#{plyAudioDiretorio.tipoSelecao}" value="4" />

                </p:commandButton>

            </p:layoutUnit>
            <p:layoutUnit position="west" header="Áudio Files">

                <p:tree id="tree-audio" value="#{plyAudioDiretorio.treeNode}" 
                    var="audioDir"
                    selectionMode="single"
                    selection="#{plyAudioDiretorio.treeNodeSelecao}">

                    <p:ajax event="select" update="@form:pnl:pnl-unit:panels,@form:pnl:pnl-unit:panels:pnl-unit-header"/>

                    <p:treeNode expandedIcon="ui-icon-folder-open">
                        <h:outputText value="#{audioDir.dsNome}" />
                    </p:treeNode>

                    <p:treeNode type="file" icon="ui-icon-document">
                        <h:outputText value="#{audioDir.dsNome}" />
                    </p:treeNode>

                </p:tree>

            </p:layoutUnit>

            <p:layoutUnit id="pnl-unit" position="center">

                <f:facet name="header">
                    <h:outputText id="pnl-unit-header" value="#{plyAudioDiretorio.tituloPainel}" />
                </f:facet>

                <p:messages id="mensagem-ply" showDetail="true" closable="true" />

                    <p:panel id="panels" >

                        <p:panel rendered="#{plyAudioDiretorio.tipoSelecao == 1}" />

                        <p:panel rendered="#{plyAudioDiretorio.tipoSelecao == 4}" >

                            <p:panelGrid id="grid-botoes" columns="2" styleClass="grid-sem-borda">

                                <p:commandButton id="btnSalvar" value="Save" icon="ui-icon-disk" update="mensagem-ply,panels,pnl-unit-header" 
                                        actionListener="#{plyAudioDiretorio.incluirDiretorio}">
                                </p:commandButton>

                            </p:panelGrid>

                            <br/>

                            <p:panelGrid id="grid-novo-dir" columns="2">

                                <h:outputLabel for="noAudioDiretorio" value="Dir Name" />
                                <p:inputText id="noAudioDiretorio" value="#{plyAudioDiretorio.noAudioDiretorio}" />

                            </p:panelGrid>
                        </p:panel>
                    </p:panel>

            </p:layoutUnit>

        </p:layout>
</h:form>
</h:body>
</html>

0 个答案:

没有答案