JSF - setPropertyActionListener

7 respostas
A

Olá estou tentando usar a tag setPropertyActionListener e não sei por que, ela não está funcionando. Não gera erro algum, ela simplesmente não funciona.

<h:form prependId="true" id="form"> <label for="finstituicao">Nome da Instituição:</label> <h:inputText id="finstituicao" value="#{instituicaoController.instituicao.nome}" onkeypress="return entsub(event)" /> <a4j:commandButton value="Procurar" id="search" action="#{instituicaoController.findInstituicoes }" reRender="tinstituicoes" /> <h:dataTable id="tinstituicoes" value="#{instituicaoController.instituicoes}" var="instituicaov" summary="Instituições"> <h:column> <f:facet name="header"> <h:outputText value="#{instituicaoController.nome}" /> </f:facet> <h:outputText value="#{instituicaov.nome}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="#{instituicaoController.sigla}" /> </f:facet> <h:outputText value="#{instituicaov.sigla}" /> </h:column> <h:column> <a4j:commandLink reRender="instituicao" value="Selecionar" oncomplete="windowClose('paneli')"> <f:setPropertyActionListener target="#{instituicaoController.instituicao}" value="#{instituicaov}" /> </a4j:commandLink> </h:column> </h:dataTable> <h:outputLink value="javascript:Richfaces.showModalPanel('ninstituicao')">Cadastrar Nova</h:outputLink> </h:form>
Alguém sabe algum motivo que possa estar causando isso?
Pelo que li sobre a tag ela seta uma propriedade com o valor indicado, mas não está fazendo isso. :roll:

7 Respostas

M

você está usando jsf 1.2?

:pensativo:

A

Sim. Com Facelets, Ajax4JSF, RichFaces e MyFaces.
Tentei usar o updateActionListener do Tomahawk, mas o seu taglib não tem este componente configurado no xml:

<tag> <tag-name>updateActionListener</tag-name> <component> <component-type>org.apache.myfaces.custom.updateactionlistener.UpdateActionListener</component-type> </component> </tag>
Alguém sabe qual o component-type deste componente para eu testar com ele?
A documentação manda utilizar o setPropertyActionListener que tem o mesmo efeito, mas ele num tá funfando. :roll:

M

Hum cara, eu não me atentei a um fato, tente colocar dentro de um command link ao invés de do componente do richfaces. Tenho quase certeza que eles não são compatíveis.

:okok:

A

São compatíveis. Já testei.
O problema é que nem os métodos que eu coloco no action ele chama quando clico, não funciona com commandButton, nem com os componentes padrões do JSF.
O mais estranho é que tenho outro formulário que utiliza esta tag e funciona normalmente.

<rich:panel> <h:form prependId="true"> <h:dataTable id="tinstituicoes" value="#{curriculoController.curriculo.bancas}" var="bancaValue" summary="Instituições"> <h:column> <f:facet name="header"> <h:outputText value="Banca" /> </f:facet> <h:outputText value="#{bancaValue.titulo}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Ano" /> </f:facet> <h:outputText value="#{bancaValue.ano}" /> </h:column> <h:column> <a4j:commandLink value="Editar" oncomplete="javascript:Richfaces.showModalPanel('panel')" reRender="panel"> <f:setPropertyActionListener target="#{bancaController.banca}" value="#{bancaValue}" /> </a4j:commandLink> </h:column> </h:dataTable> <a4j:commandLink oncomplete="javascript:Richfaces.showModalPanel('panel')" action="#{bancaController.reStart }" value="Adicionar" reRender="panel"/> </h:form> </rich:panel>

A

Eu descobri o que pode estar causando isso.
Este inputText e commandButton servem para eu realizar uma pesquisa no banco e popular uma lista que vai ser utilizada pelo dataTable.
Eu retirei este inputText e commandButton e criei um método para popular a lista do dataTable. Quando fiz isso os commandLinks funcionaram de boa. Sem problema algum, mas quando volto estes componentes para o form eles não funcionam mais.
Alguém sabe alguma maneira de eu fazer isso funcionar ou mesmo outra maneira pra fazer esta pesquisa?

M

Remova as validações do seu inputText que ele funciona belezinha.

:okok:

A

Descobri o erro.
É que meu managedBean estava com o escopo como request e quando eu clicava no commandButton do ajax4jsf ele fazia um requeste e o managedBean era instanciado novamente. Por isso eu não conseguia passar um valor a outro bean. Coloquei o escopo do managedBean como session e funcionou de boa.

Vlw a ajuda aew…

Criado 7 de agosto de 2007
Ultima resposta 9 de ago. de 2007
Respostas 7
Participantes 2