Nesse código, é criado uma aba em html para a inserção de dados em um bd, contudo ao apertar o botão que realiza o cadastro, exibe que está dando o erro de NullPointer apontando para a linha 21 aonde existe um PreparedStatement que realiza a inserção do “filme”. Não estou conseguindo achar o que estaria causando esse erro, alguém tem alguma ideia do que seja ?
O erro:
Método que chama a inserção
private Filme filme = new Filme();
private List listaFilme;
public String salvar() {
Connection conexao = ConnectionFactory.getConnection();
FilmeDAO filmedao = new FilmeDAO(conexao);
try {
if(filme.getNome().isEmpty()) {
JSFUtil.addInfoMessage("Campo NOME não informado");
} else {
if(String.valueOf(filme.getValor()).isEmpty()) {
JSFUtil.addInfoMessage("Campo VALOR não informado");
} else {
if(filme.getGenero().isEmpty()) {
JSFUtil.addInfoMessage("Campo GÊNERO não informado");
}else {
if(filme.getDisponivel().isEmpty()) {
JSFUtil.addInfoMessage("Campo DISPONIVEL não informado");
} else {
filmedao.inserir(filme);
listaFilme.add(filme);
}
}
}
}
JSFUtil.addInfoMessage("Filme " + filme.getNome() + " salvo com sucesso");
filme = new Filme();
conexao.close();
} catch(SQLException e) {
JSFUtil.addInfoMessage("ERRO AO CONECTAR COM O BANCO DE DADOS");
}
return " ";
}
Código de inserção:
private Connection conexao;
public FilmeDAO(Connection conexao) {
this.conexao = conexao;
}
public void inserir(Filme filme) throws SQLException {
String sql = "insert into filme (Nome, Valor, Genero, Disponivel) values (?,?,?,?)";
PreparedStatement comando = conexao.prepareStatement(sql);
comando.setString(1, filme.getNome());
comando.setDouble(2, filme.getValor());
comando.setString(3, filme.getGenero());
comando.setString(4, filme.getDisponivel());
comando.execute();
}
Aba html:
Cadastro de Filme
Voltar <h:outputText value="* Valor:" />
<h:inputText value="#{filmeController.filme.valor}" maxlength="8" size="15" />
<h:outputText value="* Gênero:" />
<h:inputText value="#{filmeController.filme.genero}" maxlength="40" size="40" />
<h:outputText value="* Disponivel:" />
<h:selectOneRadio value ="#{filmeController.filme.disponivel}">
<f:selectItem itemValue="S" itemLabel="Sim" />
<f:selectItem itemValue="N" itemLabel="Não" />
</h:selectOneRadio>
<h:commandButton action="#{filmeController.salvar}" value="Cadastrar"></h:commandButton>
<h:commandButton action="#{filmeController.voltar}" value="Voltar"></h:commandButton>
</h:panelGrid>
</h:form>
</f:view>