Minha tela:
[code]<?xml version="1.0" encoding="iso-8859-1" ?>
<ui:composition template="/_template.xhtml">
<ui:define name=“corpo”>
<h:form id=“form”>
<c:forEach items="#{mBean.lista}" var=“objeto” >
<h:selectBooleanCheckbox value="#{objeto.marcado}">
<f:ajax render=":form:valor#{objeto.id} :form:lbValor#{objeto.id}" />
</h:selectBooleanCheckbox>
|
<h:outputLabel value="#{objeto.desc}" />
|
<h:outputLabel id=“lbValor#{objeto.id}” value=“Valor:” rendered="#{objeto.marcado}" />
|
<p:inputText id=“valor#{objeto.id}” rendered="#{objeto.marcado}" value="#{objeto.valor}" />
|
</c:forEach>
</h:form>
</ui:define>
</ui:composition>
[/code]
Estou tentando fazer aparecer o input “valor” usando ajax no checkbox. Assim que ele for selecionado, o campo deverá aparecer, mas não estou com muita sorte.
Os valores passados à view são confiáveis, a única falha que enxergo é a falta de update do campo.
Idéias?
EDIT: Código atualizado.
<f:ajax render=“form:valor#{objeto.id}” />
Hein?! O.o
bem, não entendi oq seria o form:valor#{objeto.id} estando esse comando certo, tente com p:ajax
Ao inves de render=“form:valor#{objeto.id}” de um id para o campo em questao e passa o id do campo no rendered
Olá bruno_7317,
Não testei para ver se é o caso, mas quando uso o primefaces é bom dar preferencia para os componentes só dele, ou seja, tanto o ajax como o booleancheckbox use o p:
Certa vez não funcionava um f:ajax meu e quando troquei funcionou.
[quote=jakefrog] <f:ajax render=“form:valor#{objeto.id}” />
Hein?! O.o
[/quote]
Essa linha diz que é para renderizar o componente com o id igual a “valor + o id do objeto vindo do mBean”, ou seja, o input mais abaixo:
<p:inputText id="valor#{objeto.id}" rendered="#{objeto.marcado}" value="#{objeto.valor}" />
Por exemplo:
Suponha que você tem um objeto com id = 2, desc = “objeto2”, o id do input será “valor2”.
Ah, sim, trocar por <p:ajax /> não adiantou.
Não sei se ficou claro, mas o input em questão faz parte de uma lista, daí o porquê dele receber um id dinâmico.
Setar o um id estático para o campo fará com que todos os inputs da lista tenham o mesmo id.
[quote=gustavo_l_walker]Olá bruno_7317,
Não testei para ver se é o caso, mas quando uso o primefaces é bom dar preferencia para os componentes só dele, ou seja, tanto o ajax como o booleancheckbox use o p:
Certa vez não funcionava um f:ajax meu e quando troquei funcionou.[/quote]
Ainda nada.
Informações adicionais:
Se eu uso <f:ajax render="@form" /> o campo aparece, mas todos os outros valores que digitei são apagados.
Obs.: Alterei o código para ficar igual ao que eu estou usando atualmente. Em suma, transformei o <p:panelGrid> numa
.
EDIT:
jakefrog, mesmo não tendo me dado a resposta diretamente, foi através do seu blog que consegui descobrir a causa do meu problema:
“[…] toda vez que um objeto não é exibido e você deseja exibi-lo é necessário atualizar todo seu container.” - http://uaihebert.com/?p=669