JSF2 e Ajax

9 respostas
maxmustang

Fala galera, blz???
entao… to com a seguinte duvida
eu tenho um h:selectOneMenu e dependendo da resposta dele… eu queria esconder uma h:outPutLabel E um h:inputText
coloquei a tag f:ajax… mas quando eu seleciono, ele renderiza o form inteiro apagando todos os dados escritos anteriormente

<h:form >
                
                    <h:panelGrid columns="2">
                        
                        <h:outputLabel value="Limitar trocas:" id="limitar"/>
                        <h:selectOneMenu value="#{campanhaBean.campanha.limitarTroca}" >
                            <f:selectItem itemLabel="Selecione" itemValue="" noSelectionOption="true"/>
                            <f:selectItems value="#{campanhaBean.limitarTroca}" />
                            <f:ajax  render="@form maximo" />
                        </h:selectOneMenu>

                        <h:outputLabel value="Maximo de trocas" for="maximo" rendered="#{campanhaBean.campanha.limitarTroca ne 'NAO'}" />
                        <h:inputText value="#{campanhaBean.campanha.quantidadeMaximaDeTrocas}" rendered="#{campanhaBean.campanha.limitarTroca ne 'NAO'}" id="maximo" />
                        
                        <p:commandButton value="Gravar!" action="#{campanhaBean.insereOuAtualiza}" update="@form :growl" />
                    </h:panelGrid>
                </fieldset>
            </h:form>

Então, existe um jeito dele so renderizar os dois ao inves de renderizar o form inteiro?

9 Respostas

Filipe_A

Existe sim, coloque defina o “id” dos componentes que quer renderizar, e depois com o ajax renderize eles rs.
Ex: <f:ajax render=“idDEUM idDOOUTRO” />

Vê ai se da certo,

T+
Filipe.

maxmustang

Entao Filipe, a minha ideia era ter um selectOneMenu
que eu definiria uma resposta SIM ou NAO
se a resposta fosse nao
o outputLabel e o inputtext de maximo de vezes iriam sumir

eu passando o “@form maximo” que o id da outPutLabel e do inputText, eu consigo fazer isso… o problema e que… eu renderizo o form inteiro… perdendo informacoes
como eu faria… pra validar isso… usando apenas o maximo como vc sugeriu

abs

Filipe_A

Tentou tirar o @form?

Deixa só o id dos componentes.

T+

maxmustang

tentei

&lt;f:ajax  render="maximo" /&gt;

ele nao renderizou o componenete.
provavelmente nao deve ter passado na validacao

&lt;h:outputLabel value="Maximo de trocas" for="maximo" rendered="#{campanhaBean.campanha.limitarTroca ne 'NAO'}" /&gt;
  &lt;h:inputText value="#{campanhaBean.campanha.quantidadeMaximaDeTrocas}" rendered="#{campanhaBean.campanha.limitarTroca ne 'NAO'}" id="maximo" /&gt;

:frowning:

Filipe_A

Tipo não preciso do form. Só o id dos componentes.

só <f:ajax render=“maximo” />

Tenta ai :slight_smile:

maxmustang

entao… eu tentei… tinha colado errado a resp :smiley:

Filipe_A

humm, coloca um h:messages na pagina pra ver…

Você está usando um objeto seu no selectOneMenu?

maxmustang

to usando um Enum que ta no modelo como o value do selectOneMenu
e uma lista do msmo Enum no bean

Filipe_A

É pode ser validação, nunca trabalhei com Enum no selectOne, esse Enum é só tem SIM e NAO?

Talvez você possa colocar um listener nessa tag ajax e dependendo da seleção mudar um valor de um propriedade boolean no seu bean e essa propriedade ta ligado aos componentes que deseja renderizar. Não sei…

Você colocou o hmessages, apareceu algum erro?

abs

Criado 18 de março de 2011
Ultima resposta 18 de mar. de 2011
Respostas 9
Participantes 2