Problema JSF

10 respostas
andrejusti

Oii pessoal to com um problema no jsf, o seguinta quando clico no link, botao ou qualquer coisa nao funciona, não submete,

Minha pagina JSF

<%-- 
    Document   : novojsp1
    Created on : 28/09/2009, 22:42:17
    Author     : andrejusti
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@taglib prefix="a4j" uri="http://richfaces.org/a4j" %>
<%@taglib prefix="rich" uri="http://richfaces.org/rich" %>
<link rel="stylesheet" type="text/css" href="css/enquete/enquete.css"/>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>JSP Page</title>
        </head>
        <body>
            <a4j:form id="frmEnquete">
                <f:verbatim><div class="divEnqueteMenu" title="Deixe sua opinião aqui."></f:verbatim>
                    <h:graphicImage value="imagens/enquete/enquete-image.png" width="171" height="23px" alt="Enquete" title="Enquete"/>
                    <f:verbatim> <h2 class="h5Enquete"> <h:outputText value="#{EnqueteMB.pergunta}"/> </h2> </f:verbatim>
                    <h:selectOneRadio layout="pageDirection" styleClass="opcoesEnquete">
                        <f:selectItem itemLabel="#{EnqueteMB.questao1}" itemValue="1"/>
                        <f:selectItem itemLabel="#{EnqueteMB.questao2}" itemValue="2"/>
                        <f:selectItem itemLabel="#{EnqueteMB.questao3}" itemValue="3"/>
                        <f:selectItem itemLabel="#{EnqueteMB.questao4}" itemValue="4"/>
                    </h:selectOneRadio>
                    <f:verbatim><div class="divBotoes" title="Enquete"></f:verbatim>
                        <a4j:commandLink actionListener="#{EnqueteMB.selecionar}"    reRender="enquete">
                            <f:verbatim><div class="divBotaoVotar" title="Clique para votar">&nbsp;</div></f:verbatim>
                        </a4j:commandLink>
                                   <f:verbatim></div></f:verbatim>

            </a4j:form>

        </body>
    </html>
</f:view>
Meu MB
package br.com.dukatitec.enquete.mbeam;

import br.com.dukatitec.enquete.dao.EnqueteDAO;
import br.com.dukatitec.enquete.entity.Enquete;
import java.lang.reflect.InvocationTargetException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.beanutils.BeanUtils;
import javax.faces.event.ActionEvent;

public class EnqueteMB {

    private Integer id;
    private int status;
    private String pergunta;
    private String questao1;
    private int questao1_votos;
    private String questao2;
    private int questao2_votos;
    private String questao3;
    private int questao3_votos;
    private String questao4;
    private int questao4_votos;

    public EnqueteMB() {
        this.iniciar();
    }

    public void selecionar(ActionEvent evt) {
        EnqueteDAO enqueteDAO = new EnqueteDAO();
        Enquete enquete = enqueteDAO.selectEnquete(4);
        try {
            BeanUtils.copyProperties(this, enquete);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(EnqueteMB.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InvocationTargetException ex) {
            Logger.getLogger(EnqueteMB.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public void iniciar() {
        EnqueteDAO enqueteDAO = new EnqueteDAO();
        Enquete enquete = enqueteDAO.selectEnquete(2);
        try {
            BeanUtils.copyProperties(this, enquete);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(EnqueteMB.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InvocationTargetException ex) {
            Logger.getLogger(EnqueteMB.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getPergunta() {
        return pergunta;
    }

    public void setPergunta(String pergunta) {
        this.pergunta = pergunta;
    }

    public String getQuestao1() {
        return questao1;
    }

    public void setQuestao1(String questao1) {
        this.questao1 = questao1;
    }

    public int getQuestao1_votos() {
        return questao1_votos;
    }

    public void setQuestao1_votos(int questao1_votos) {
        this.questao1_votos = questao1_votos;
    }

    public String getQuestao2() {
        return questao2;
    }

    public void setQuestao2(String questao2) {
        this.questao2 = questao2;
    }

    public int getQuestao2_votos() {
        return questao2_votos;
    }

    public void setQuestao2_votos(int questao2_votos) {
        this.questao2_votos = questao2_votos;
    }

    public String getQuestao3() {
        return questao3;
    }

    public void setQuestao3(String questao3) {
        this.questao3 = questao3;
    }

    public int getQuestao3_votos() {
        return questao3_votos;
    }

    public void setQuestao3_votos(int questao3_votos) {
        this.questao3_votos = questao3_votos;
    }

    public String getQuestao4() {
        return questao4;
    }

    public void setQuestao4(String questao4) {
        this.questao4 = questao4;
    }

    public int getQuestao4_votos() {
        return questao4_votos;
    }

    public void setQuestao4_votos(int questao4_votos) {
        this.questao4_votos = questao4_votos;
    }
}

So que ele nao submete a pagina, nao chama o metodo de forma nem uma, alguem pode me fala uque to fazendo de errado?
:D

10 Respostas

danielfigueiredoc

Não sei se ta errado, mas tenta fazer o seguinte, coloca ao invés de actionlistener a chamada do seu método “MB.selecionar” no onclick do a4j:commandButton, dai você vai ter que mudar o tipo de retorno do método selecionar para String, e retornar null. Acho que ele vai entrar no método dai… Se quiser nevagar para outra página e tiver usando JSF puro, você pode retornar uma string e deve configurar o xml nos navegation-rule para qnd alguém retornar essa string ele ir pra pagina X.
Se o que você pretende é limpar os campos vai ter que dar um refresh pelo id, você colocou reRender=“enquete” mas eu não achei nenhum id com esse nome, não seria reRender=“frmEnquete” ?

Espero ajudar!

Abraço!

Regis_A_Rocha

tive um problema parecido com esse andrejusti, gostaria de saber si vc conseguiu resolver?

Marky.Vasconcelos

O a4j command link faz o envia com Ajax e caso ele tiver apenas o listener ele não redireciona a lgar algum. E voce pode rerenderizar os objetos que deveriam sofrer alterações depois do listener ser chamado com o atributo reRender do a4j:commandLink.

Regis_A_Rocha

eu tinha um

h:commandButton

na action dele passando meu metodo de atualizar do managerBean
i nao acontecia nada.

eu tentei com a4j, mais nao tinha dado certo.
eu nao estou mais mechendo nesse projetinho de teste
mais nao tinha conseguido resolver o problema

danielfigueiredoc

Cara eu quase nunca tive problemas em não executar o método, quando tive era porque não tinha declarado como String o retorno do método, ou porque errei em alguma configuração no faces-config.

Regis_A_Rocha

tem um cara q trabalha cmg q tbm nunca teve problema.

engraçado q eu fiz o metodo do tipo String q retornava null, qdo nao qria navegar em outra tela…
o metodo estava td certo…

…ate parei nem mechi mais, era pra teste msm …

agora to fazendo alguns testes com o VRptor pra treinar…

danielfigueiredoc

É eu quando mechi um pouco mais afundo com JSF sem usar Facelets literalmente pedi a morte, porque ele é cheio de bugs cara.
Tem que ficar fazendo uns pog pra tratar os erros que da quando a tela começa a ficar com um fluxo ou funcionalidade grandes, mas com o facelets fica “filé” fora que você vai criando os componentes e vai reutilizando e ao mesmo tempo modularizando o projeto.

Regis_A_Rocha

legal hein…

o que eu nao gostava cara era de fazer os metodos do managerBean do tipo String e rotornava null… qdo nao ia navegar em outra tela

no richfaces tbm … as vezes dava problema no calendar… qdo vc mudava de mes…

ql foi problema mais chato q vc pegou?/

danielfigueiredoc

Regis A Rocha:
legal hein…

o que eu nao gostava cara era de fazer os metodos do managerBean do tipo String e rotornava null… qdo nao ia navegar em outra tela

no richfaces tbm … as vezes dava problema no calendar… qdo vc mudava de mes…

ql foi problema mais chato q vc pegou?/

É isso é verdade, mas dai é interessante você usar o framework do seam, pra ter controle de fluxo de página, e esses bugs do richfaces tem mta coisa que já ta arrumada hoje, fora os componentes novos, da pra misturar tudo, fazer componentes especificos, é bem legal. Eu gosto de trabalhar com eles.
vamos ver só até quando vai durar isso neh =]

Regis_A_Rocha

é da pra fazer coisas,

eu tava vendo um amigo fazendo uns testes com aquele java Fx

achei legal tbm
tem varios componentes…

ja chegou a mecher com ele

Criado 28 de setembro de 2009
Ultima resposta 30 de set. de 2009
Respostas 10
Participantes 4