Problema com h:selectBooleanCheckbox

1 resposta
vitimnunes

olá pessoal, estou tendo um pequeno problema com o h:selectBooleanCheckbox do JSF 2.0, está acontecendo o seguinte: quando eu chamo o metodo que vai salvar o formulário através do commndButton, os valores de todos os h:selectBooleanCheckbox são setados para false…

o XHTML

<h:form id="frmCadastroPartida">
    <h:panelGrid id="panelCadastroPartidaPlacarFields" columns="2" cellspacing="4">
        <h:outputLabel for="regulamentarScoreJogador1" value="#{partidaController.partida.jogadorClube1.clube.nome} ( #{partidaController.partida.jogadorClube1.jogador.nome} )" />
        <p:inputText id="regulamentarScoreJogador1" value="#{partidaController.partida.placar.regulamentarScoreJogador1}" styleClass="input-text">

        </p:inputText>

        <h:outputLabel for="regulamentarScoreJogador1" value="#{partidaController.partida.jogadorClube.clube.nome} ( #{partidaController.partida.jogadorClube.jogador.nome} )" />
        <p:inputText id="regulamentarScoreJogador2" value="#{partidaController.partida.placar.regulamentarScoreJogador2}" styleClass="input-text">

        </p:inputText>

        <h:outputLabel for="hasProrrogacao" value="Houve Prorrogação" />
        <h:selectBooleanCheckbox id="hasProrrogacao" value="#{partidaController.partida.placar.prorrogacao}" immediate="true" />

        <h:outputLabel for="wasGoldenGoal" value="Golden Gol" />
        <h:selectBooleanCheckbox id="wasGoldenGoal" value="#{partidaController.partida.placar.goldenGoal}" immediate="true" />

        <h:outputLabel for="wasPenaltykicks" value="Houve Penalidades" />
        <h:selectBooleanCheckbox id="wasPenaltykicks" value="#{partidaController.partida.placar.penaltyKick}" immediate="true" />

        <h:outputLabel for="penaltyScoreJogador1" value="#{partidaController.partida.jogadorClube1.clube.nome} ( #{partidaController.partida.jogadorClube1.jogador.nome} ) Pen." />
        <p:inputText id="penaltyScoreJogador1" value="#{partidaController.partida.placar.penaltyScoreJogador1}"  styleClass="input-text" />

        <h:outputLabel for="penaltyScoreJogador2" value="#{partidaController.partida.jogadorClube.clube.nome} ( #{partidaController.partida.jogadorClube.jogador.nome} ) Pen." />
        <p:inputText id="penaltyScoreJogador2" value="#{partidaController.partida.placar.penaltyScoreJogador2}"  styleClass="input-text" />
    </h:panelGrid>
    
    <h:panelGrid id="panelCadastroJogadorButtons" columns="2" cellspacing="4">
        <p:commandButton value="Salvar" action="#{partidaController.saveOrUpdate()}" update="frmCadastroPartida" styleClass="input-button submit" oncomplete="wizard.loadStep(wizard.cfg.steps[0], true)" />
        <p:commandButton value="Cancelar" action="#{partidaController.prepareInsert()}" update="frmCadastroPartida" styleClass="input-button" oncomplete="wizard.loadStep(wizard.cfg.steps[0], true)" />
    </h:panelGrid>
</h:form>

o ManagedBean

package br.com.sisfute.controller;

//imports

@ManagedBean
@ViewScoped
public final class PartidaController implements FacesController {

    private Partida partida;
    private DataModel<Partida> partidaList;
    private boolean updateAction;

    /**
     * Creates a new instance of PartidaController
     */
    public PartidaController() {
        partida = new Partida();

        partida.setJogadorClube( new JogadorClube() );
        partida.setJogadorClube1( new JogadorClube() );
        partida.setPlacar( new Placar() );

        partidaList = getPartidaList();
    }

    // getters e setters

    @Override
    public String save() {
        PartidaDAO partidaDAO = DAOFactory.createPartidaDAO();
        FacesContext facesContext = FacesContext.getCurrentInstance();
        FacesMessage facesMessage = null;

        getPartida().setDataCadastro( new Date() );
        getPartida().setDataAlteracao( new Date() );
        
        try {
            partidaDAO.save( getPartida() );
            facesMessage = new FacesMessage( FacesMessage.SEVERITY_INFO, INSERT_SUCCESS_MESSAGE, null );
        } catch( HibernateException e ) {
            e.printStackTrace( System.err );
            facesMessage = new FacesMessage( FacesMessage.SEVERITY_ERROR, INSERT_FAILURE_MESSAGE, null );
        }

        facesContext.addMessage( null, facesMessage );
        prepareInsert();

        return null;
    }

    @Override
    public String saveOrUpdate() {
        getPartida().getPlacar().setPartida( getPartida() );
        return isUpdateAction() ? update() : save();
    }

    @Override
    public String update() {
        PartidaDAO partidaDAO = DAOFactory.createPartidaDAO();
        FacesContext facesContext = FacesContext.getCurrentInstance();
        FacesMessage facesMessage = null;

        getPartida().setDataAlteracao( new Date() );

        try {
            partidaDAO.update( getPartida() );
            facesMessage = new FacesMessage( FacesMessage.SEVERITY_INFO, UPDATE_SUCCESS_MESSAGE, null );
        } catch( HibernateException e ) {
            e.printStackTrace( System.err );
            facesMessage = new FacesMessage( FacesMessage.SEVERITY_ERROR, UPDATE_FAILURE_MESSAGE, null );
        }

        facesContext.addMessage( null, facesMessage );
        prepareInsert();

        return null;
    }
}

todos os campos sao inseridos e atualizados corretamente, exceto os que são ligados aos h:selectBooleanCheckbox que sempre ficam como false
oq pode ser isso?

1 Resposta

vitimnunes

será que isso só aconteceu cmg?! =/

Criado 29 de julho de 2011
Ultima resposta 30 de jul. de 2011
Respostas 1
Participantes 1