Pessoal, estou quase terminando um projeto, até agora não tive nenhum problema, mas estou implementando um jsp para adicionar uma linha no banco e não está funcionando. Para todas as minhas outras tabelas funcionou normal, sem problemas.
Parece que ele não enxerga o actionListener (adicionarListener) do commandButton
Olhem o código: jsp:<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<script type="text/javascript" src="${pageContext.request.contextPath}/javascript/scripts.js"></script>
<html>
<f:view>
<head>
<link href="${pageContext.request.contextPath}/faces/css/styles.css" rel="stylesheet" type="text/css"/>
<f:loadBundle basename="br.edu.unifeob.spdweb.resources.mensagens" var="msgs"/>
<title>
<h:outputText value="#{msgs.tituloAplicacao}"/>
</title>
</head>
<body>
<h:form>
<p>
<h:outputText value="#{msgs.tituloAdicionarPlano}" styleClass="titulo"/>
</p>
<h:panelGrid columns="2">
<h:outputText value="#{msgs.labelAno}" styleClass="formLabel"/>
<h:selectOneMenu id="ano"
binding="#{planoBack.selectOneAno}"
styleClass="formListMenu">
<f:selectItems value="#{listasSelecaoBack.anos}"/>
</h:selectOneMenu>
<h:outputText value="#{msgs.labelDisciplina}" styleClass="formLabel"/>
<h:selectOneMenu id="idDisciplina"
binding="#{planoBack.selectOneIdDisciplina}"
styleClass="formListMenu">
<f:selectItems value="#{listasSelecaoBack.disciplinas}"/>
</h:selectOneMenu>
<h:outputText value="#{msgs.labelEmenta}" styleClass="formLabel"/>
<h:inputTextarea id="ementa"
cols="90"
rows="20"
binding="#{planoBack.inputEmenta}"
styleClass="formInput">
</h:inputTextarea>
<h:outputText value="#{msgs.labelConteudo}" styleClass="formLabel"/>
<h:inputTextarea id="conteudo"
cols="90"
rows="20"
binding="#{planoBack.inputConteudo}"
styleClass="formInput">
</h:inputTextarea>
<h:outputText value="#{msgs.labelCronograma}" styleClass="formLabel"/>
<h:inputTextarea id="cronograma"
cols="90"
rows="10"
binding="#{planoBack.inputCronograma}"
styleClass="formInput">
</h:inputTextarea>
<h:outputText value="#{msgs.labelBibliografiaBasica}" styleClass="formLabel"/>
<h:inputTextarea id="bibliografiaBasica"
cols="90"
rows="10"
binding="#{planoBack.inputBibliografiaBasica}"
styleClass="formInput">
</h:inputTextarea>
<h:outputText value="#{msgs.labelBibliografiaComplementar}" styleClass="formLabel"/>
<h:inputTextarea id="bibliografiaComplementar"
cols="90"
rows="5"
binding="#{planoBack.inputBibliografiaComplementar}"
styleClass="formInput">
</h:inputTextarea>
</h:panelGrid>
<p>
<h:commandButton value="#{msgs.labelAdicionar}"
actionListener="#{planoBack.adicionarListener}"
action="#{planoBack.act}"
styleClass="formButton"/>
<h:commandButton value="#{msgs.labelCancelar}"
immediate="true"
actionListener="#{planoBack.cancelarListener}"
action="#{planoBack.act}"
styleClass="formButton"/>
</p>
</h:form>
</body>
</f:view>
</html>
/**
*
* @author David Buzatto
*/
public class PlanoBackingBean extends GenericPersistenceBackingBean{
/*
* Componentes do formulário.
*/
private UICommand commandAlterar;
private UICommand commandRemover;
private UIInput inputId;
private UIInput inputEmenta;
private UIInput inputConteudo;
private UIInput inputCronograma;
private UIInput inputBibliografiaBasica;
private UIInput inputBibliografiaComplementar;
private UISelectOne selectOneIdDisciplina;
private UISelectOne selectOneAno;
/*
* Cria uma nova instância de PlanoBackingBean
* e inicializa os componentes de formulário.
*/
public PlanoBackingBean() {
initComponents();
}
/*
* Implementação dos métodos abstratos de GenericPersistenceBackingBean.
*/
public void novoListener( ActionEvent event ) {
// reinicia os componentes
initComponents();
// sinaliza que foi dado ok
setAction( ActionConstants.NOVO_OK );
}
public void adicionarListener( ActionEvent event ) {
// obtém os valores dos componentes
int ano = Integer.parseInt( ( String ) getSelectOneAno().getValue() );
String idDisciplina = ( String ) getSelectOneIdDisciplina().getValue();
String ementa = ( String ) getInputEmenta().getValue();
String conteudo = ( String ) getInputConteudo().getValue();
String cronograma = ( String ) getInputCronograma().getValue();
String bibliografiaBasica = ( String ) getInputBibliografiaBasica().getValue();
String bibliografiaComplementar = ( String ) getInputBibliografiaComplementar().getValue();
// cria um novo objeto com os valores dos componentes usados no binding
Plano o = new Plano();
o.setAno( ano );
o.setIdDisciplina( idDisciplina );
o.setEmenta( ementa );
o.setConteudo( conteudo );
o.setCronograma( cronograma );
o.setBibliografiaBasica( bibliografiaBasica );
o.setBibliografiaComplementar( bibliografiaComplementar );
try{
// grava o novo objeto
new PlanoDAO< Plano >().adicionar( o );
// sinaliza que foi gravado
setAction( ActionConstants.ADICIONADO_OK );
// reinicia os componentes
initComponents();
} catch ( SQLException exc ) {
// sinaliza erro no sql
setAction( ActionConstants.ERRO_SQL );
// posta a excessão
Utilidades.postSQLException( exc );
// reinicia os componentes
initComponents();
}
}
public void alterarListener( ActionEvent event ) {
// obtém os valores dos componentes
int id = Integer.parseInt( ( String ) getInputId().getValue() );
int ano = Integer.parseInt( ( String ) getSelectOneAno().getValue() );
String idDisciplina = ( String ) getSelectOneIdDisciplina().getValue();
String ementa = ( String ) getInputEmenta().getValue();
String conteudo = ( String ) getInputConteudo().getValue();
String cronograma = ( String ) getInputCronograma().getValue();
String bibliografiaBasica = ( String ) getInputBibliografiaBasica().getValue();
String bibliografiaComplementar = ( String ) getInputBibliografiaComplementar().getValue();
// cria um novo objeto com os valores recebidos
Plano o = new Plano();
o.setAno( ano );
o.setIdDisciplina( idDisciplina );
o.setEmenta( ementa );
o.setConteudo( conteudo );
o.setCronograma( cronograma );
o.setBibliografiaBasica( bibliografiaBasica );
o.setBibliografiaComplementar( bibliografiaComplementar );
try{
// altera o objeto obtido
new PlanoDAO< Plano >().alterar( o );
// sinaliza que foi alterado
setAction( ActionConstants.ALTERADO_OK );
// reinicia os componentes
initComponents();
} catch ( SQLException exc ) {
// sinaliza erro no sql
setAction( ActionConstants.ERRO_SQL );
// posta a excessão
Utilidades.postSQLException( exc );
// reinicia os componentes
initComponents();
}
}
public void removerListener( ActionEvent event ) {
// obtém o valor do id pelo componente command
int id = Integer.parseInt( ( String ) getInputId().getValue() );
// cria um novo objeto com o id recebido
Plano o = new Plano();
o.setId( id );
try{
// remove o objeto
new PlanoDAO< Plano >().remover( o );
// sinaliza que foi removido
setAction( ActionConstants.REMOVIDO_OK );
// reinicia os componentes
initComponents();
} catch ( SQLException exc ) {
// sinaliza erro no sql
setAction( ActionConstants.ERRO_SQL );
// posta a excessão
Utilidades.postSQLException( exc );
// reinicia os componentes
initComponents();
}
}
public void prepararAlteracaoListener( ActionEvent event ) {
// obtém o valor do id pelo componente command
int id = ( Integer ) getCommandAlterar().getValue();
try{
// cria um novo dao
PlanoDAO dao = new PlanoDAO();
// obtém o valor correto
Plano o = ( Plano ) dao.getById( id ).get( 0 );
// seta os valores nos componentes
getInputId().setValue( o.getId() );
getSelectOneAno().setValue( o.getAno() );
getSelectOneIdDisciplina().setValue( o.getIdDisciplina() );
getInputEmenta().setValue( o.getEmenta() );
getInputConteudo().setValue( o.getConteudo() );
getInputCronograma().setValue( o.getCronograma() );
getInputBibliografiaBasica().setValue( o.getBibliografiaBasica() );
getInputBibliografiaComplementar().setValue( o.getBibliografiaComplementar() );
// sinaliza que está pronto para alterar
setAction( ActionConstants.PREPARADO_ALTERACAO_OK );
} catch ( SQLException exc ) {
// sinaliza erro no sql
setAction( ActionConstants.ERRO_SQL );
// posta a excessão
Utilidades.postSQLException( exc );
}
}
public void prepararRemocaoListener( ActionEvent event ) {
// obtém o valor do id pelo componente command
int id = ( Integer ) getCommandAlterar().getValue();
try{
// cria um novo dao
PlanoDAO dao = new PlanoDAO();
// obtém o valor correto
Plano o = ( Plano ) dao.getById( id ).get( 0 );
// seta os valores nos componentes
getInputId().setValue( o.getId() );
getSelectOneAno().setValue( o.getAno() );
getSelectOneIdDisciplina().setValue( o.getIdDisciplina() );
getInputEmenta().setValue( o.getEmenta() );
getInputConteudo().setValue( o.getConteudo() );
getInputCronograma().setValue( o.getCronograma() );
getInputBibliografiaBasica().setValue( o.getBibliografiaBasica() );
getInputBibliografiaComplementar().setValue( o.getBibliografiaComplementar() );
// sinaliza que está pronto para remover
setAction( ActionConstants.PREPARADO_REMOCAO_OK );
} catch ( SQLException exc ) {
// sinaliza erro no sql
setAction( ActionConstants.ERRO_SQL );
// posta a excessão
Utilidades.postSQLException( exc );
}
}
public void cancelarListener( ActionEvent event ) {
// reinicia os componentes
initComponents();
// sinaliza que foi cancelado
setAction( ActionConstants.CANCELADO_OK );
}
public List getList() {
try{
return new PlanoDAO().getList();
} catch ( SQLException exc ) {
// posta a excessão
Utilidades.postSQLException( exc );
return null;
}
}
public Result getListaApresentacao() {
try {
Connection conexao = ConnectionFactory.getConnection(
ConnectionConstants.SPD_WEB );
PreparedStatement stmt = conexao.prepareStatement(
"SELECT p.id id, p.ano ano, c.descricao descCurso, d.descricao descDisciplina, p.status status " +
" FROM plano p, disciplina d, curso c " +
" WHERE p.id_disciplina = d.id AND " +
" d.id_curso = c.id " +
" ORDER BY ano, descCurso, descDisciplina ");
ResultSet rs = stmt.executeQuery();
return ResultSupport.toResult( rs );
} catch ( SQLException exc ) {
// posta a excessão
Utilidades.postSQLException( exc );
return null;
}
}
public String act() {
return getAction();
}
/*
* Inicializa os componentes de binding com o formulário.
*/
private void initComponents() {
setCommandAlterar( new UICommand() );
setCommandRemover( new UICommand() );
setInputId( new UIInput() );
setSelectOneAno( new UISelectOne() );
setInputEmenta( new UIInput() );
setInputConteudo( new UIInput() );
setInputCronograma( new UIInput() );
setInputBibliografiaBasica( new UIInput() );
setInputBibliografiaComplementar( new UIInput() );
setSelectOneIdDisciplina( new UISelectOne() );
}
public UICommand getCommandAlterar() {
return commandAlterar;
}
public void setCommandAlterar(UICommand commandAlterar) {
this.commandAlterar = commandAlterar;
}
public UICommand getCommandRemover() {
return commandRemover;
}
public void setCommandRemover(UICommand commandRemover) {
this.commandRemover = commandRemover;
}
public UIInput getInputId() {
return inputId;
}
public void setInputId(UIInput inputId) {
this.inputId = inputId;
}
public UIInput getInputEmenta() {
return inputEmenta;
}
public void setInputEmenta(UIInput inputEmenta) {
this.inputEmenta = inputEmenta;
}
public UIInput getInputConteudo() {
return inputConteudo;
}
public void setInputConteudo(UIInput inputConteudo) {
this.inputConteudo = inputConteudo;
}
public UIInput getInputCronograma() {
return inputCronograma;
}
public void setInputCronograma(UIInput inputCronograma) {
this.inputCronograma = inputCronograma;
}
public UIInput getInputBibliografiaBasica() {
return inputBibliografiaBasica;
}
public void setInputBibliografiaBasica(UIInput inputBibliografiaBasica) {
this.inputBibliografiaBasica = inputBibliografiaBasica;
}
public UIInput getInputBibliografiaComplementar() {
return inputBibliografiaComplementar;
}
public void setInputBibliografiaComplementar(UIInput inputBibliografiaComplementar) {
this.inputBibliografiaComplementar = inputBibliografiaComplementar;
}
public UISelectOne getSelectOneIdDisciplina() {
return selectOneIdDisciplina;
}
public void setSelectOneIdDisciplina(UISelectOne selectOneIdDisciplina) {
this.selectOneIdDisciplina = selectOneIdDisciplina;
}
public UISelectOne getSelectOneAno() {
return selectOneAno;
}
public void setSelectOneAno(UISelectOne selectOneAno) {
this.selectOneAno = selectOneAno;
}
}
Esse bean e os outros utilizados no jsp acima estão devidamente configurados no faces-config.
Já fiz isso váááááárias vezes, mas só com o último cadastro está dando pau.
Aguardo resposta!
