我有一个很大的问题来控制我的观点。 主要问题是当我使用面板渲染属性时,感觉所有类属性都被重置。
不会调用在此面板字段设置器中提交输入。
调试托管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>