Action do h:commandButton dentro do ui:repeat não é chamado com @RequestScoped

7 respostas
gilbueno

Olá amigos,

estou com outro problema com o @RequestScoped e gostaria de saber se sabem como solucionar,
lembrando mais uma vez: não quero usar @SessionScoped, preciso usar @RequestScoped

aqui vai o problema:

tenho o seguinte facelet:

<ui:repeat value="#{meuBean.minhaLista}" var="itemDaLista">
          <h:commandButton action="#{meuBean.meuMetodo}"/>
</ui:repeat>

de jeito nenhum consigo executar o método “meuMetodo”
o JSF simplesmente ignora, não faz nada ao clicar no botão! e olha que não estou passando nenhum parâmetro, só peço para dar um System.out e nada!

será q tem como fazer algo com html e javascript?

não quero usar primefaces, richfaces, manolofaces, nada dessas bibliotecas externas

obrigado pela ajuda

7 Respostas

marcos1EM

O seu código está dentro de um <h:form> ?

gilbueno

sim, claro :slight_smile:

marcos1EM

Veja meu exemplo, funciona normalmente:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <ui:repeat value="#{meuBean.words}" var="itemDaLista">
                <h:commandButton  value="#{itemDaLista}" action="#{meuBean.meuMetodo}"/>
            </ui:repeat>
        </h:form>
    </h:body>
</html>
gilbueno

vc está usando @RequestScoped?

eu to achando que meu problema é outro…

to achando que é pq eu to usando esse facelet no ui:include

estou fazendo um sistema de portlet, e tenho uma “janela” que é representada tipo assim:
<ui:include src=“meuFacelet.xhtml”/>

ta mor treta pq tem um monte de componente que não é compativel com outro
principalmente quando uso @RequestScoped

eu vou dar mais uma conferida pra ver se é esse o problema

obrigado pela ajuda

Priuli

Conseguiu alguma solução para o seu problema ?
Estou passando pelo mesmo por enquanto estou utilizando scopo de sessao mas gostaria de utilizar o escopo de request.

gilbueno

Sim, consegui uma ótima solução que eu aconselho a todos que utilizam o framework JSF:

desistam, sinceramente, desistam de sofrer, existem muitas outras soluções por aí
Eu estou usando apenas Servlet/Webservice e javascript agora. Muito mais fácil e prático.
Experimente usar jQuery, underscore.js e backbone.js são frameworks javascript que fazem a diferença.

Mas se vc quer mesmo usar JSF use @SessionScoped, é a única maneira que funciona, ele não foi feito pra ser escalavel respondendo requests independentes sem manter dados na sessão.

Ainda existem outros frameworks como VRaptor, mas javascript é o canal.

gilbueno

ok eu respondi aquilo e tá valendo, mas acho q se vc usar c:forEach pode funcionar :P~

Criado 27 de janeiro de 2011
Ultima resposta 8 de dez. de 2011
Respostas 7
Participantes 3