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?