Bagunça = JSf?

Pessoal,

Estou começando a refazer uma aplicação que esta atualmente em struts.
Quero passar pra JSF.

Mais ate onde vi, os tutoriais que achei colocam uma “GOD CLASS” pra resolver as ações do JSF.

Eu quero muito bem separados meu bean, do meu business, e do meu Acesso a dados.

estruturei assim:

AlunoAction :

[code]package jsf.business;

import jsf.entity.AlunoEntity;
import jsf.sql.AlunoDB;

public class AlunoAction {

private String nome;
private String email;
public static final String INSERIDO = “sucess”;

public AlunoAction() { }

public String inserir() {
AlunoEntity aluno = new AlunoEntity();
aluno.setNome(nome);
aluno.setEmail(email);
AlunoDB.insert(aluno);

return INSERIDO;

}

}[/code]

AlunoEntity:

[code]package jsf.entity;

public class AlunoEntity {
private Integer idAluno;
private String nome;
private String email;

public AlunoEntity() { }

public void setIdAluno(Integer idAluno) {
this.idAluno = idAluno;
}

public void setNome(String nome) {
this.nome = nome;
}

public void setEmail(String email) {
this.email = email;
}

public Integer getIdAluno() {
return idAluno;
}

public String getNome() {
return nome;
}

public String getEmail() {
return email;
}

}[/code]

AlunoDB :

[code]package jsf.sql;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Connection;
import jsf.entity.AlunoEntity;

public class AlunoDB {

public AlunoDB() { }

public static void insert(AlunoEntity alunoEntity){

PreparedStatement stmt = null;
ResultSet rs = null;
Connection conn = null;

try {
String sql = “insert into aluno(nome,email) values (?,?)”;
conn = DBControllerMysql.getInstance().getConnection();
stmt = conn.prepareStatement(sql);

System.out.println("alunoEntity.getNome(): " + alunoEntity.getNome());
System.out.println("alunoEntity.getEmail(): " + alunoEntity.getEmail());

stmt.setString(1,alunoEntity.getNome());
stmt.setString(2,alunoEntity.getEmail());
stmt.executeUpdate();

sql = null;//performance

}
catch (Exception ex) {
System.out.println(ex.getMessage());
}finally {
DBControllerMysql.getInstance().closeAll(conn, rs, stmt);
}
}
}[/code]

Faces-config

[code]<?xml version="1.0" encoding="UTF-8"?>

/index.jsf.jsp sucess /inserir.jsf.jsp aluno jsf.business.AlunoAction session alunoEntity jsf.entity.AlunoEntity session [/code]

Index.jsf.jsp

[code]<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>
<f:view>

index.jsf

<h:form>

Nome: <h:inputText id=“nome” value="#{alunoEntity.nome}"/>


E-mail: <h:inputText id=“email” value="#{alunoEntity.email}"/>

<h:commandButton value=“Enviar” action="#{aluno.inserir}"/>



<h:outputLink value="/nada.jsf">
<f:verbatim> Alberto </f:verbatim>
</h:outputLink>

</h:form>

[/code]

Quando tento inserir usando esse index.jsf.jsp
dá erro pq o banco não aceita valores nulos
e alunoEntity.nome e alunoEntity.email estão indo nulos.

Desde já ja agradeço a ajuda.
Abraço

tu viu que tu ta tentando setar eles no AlunoEntity e ler eles do AlunoAction?

outra coisa, um MBea não é uma action, ele pode ter diversos metodos action …

outra, por que AlunoAction (ja que tu chamou assim) não pode ter uma propriedade do tipo AlunoEntity? assim tu evita código duplicado.

mais uma, não coloque todos os teus mbeans na sessão, isto vai diminuir muito a escalabilidade da tua aplicação.

e por último, para trabalhar com JSF esqueça totalmente como você trabalhava com struts, os paradigmas são bem diferentes, por tanto, se você tentar trabalhar da mesma maneira, só vai sair porcaria …
JSF funciona bem parecido com uma aplicação desktop …