Pessoal,
Tenho, em uma aplicação JSF para emissão de Dipliomas de uma universidade, uma classe DiplomaBean que possui uma composição com uma classe ParametroBean.
A página JSF associada ao cadastro do Diploma contém, dentre vários campos, quatro atributos da classe ParametroBean.
Quando eu cadastro um Diploma, tanto posso usar o parâmetro atual, como posso escolher um parâmetro qualquer.
Pois bem, a minha dúvida é como faço para carregar o conjunto atual de parâmetros(existe um método na classe ParametroBean que me retona esses dados) na página de Diploma ?
Segue, abaixo, trecho da página de cadastro do Diploma onde tento listar o conjunto atual de parâmetros chamando o método adequado através de EL - Exppression Language.
...
<rich:panel header="Parâmetros do Diploma">
<h:panelGrid id="panelParâmetros" columns="2">
<h:outputText styleClass="labels" value="Parâmetro Atual:" />
<br></br>
<h:outputText styleClass="labels" value="Pró-Reitor" />
<h:inputText id="proReitor" value="#{parametroBean.parametroAtual.proReitor}" maxlength="45" required="#{diplomaBean.semPendencia and diplomaBean.novo}" disabled="#{not diplomaBean.novo}" requiredMessage="Campo Pró-Reitor não preenchido" size="75" />
<h:outputText styleClass="labels" value="Coord. Escol." />
<h:inputText id="coordEscolaridade" value="#{parametroBean.parametroAtual.coordEscolaridade}" maxlength="45" required="#{diplomaBean.semPendencia and diplomaBean.novo}" disabled="#{not diplomaBean.novo}" requiredMessage="Campo Coord. Escolar. não preenchido" size="75" />
<h:outputText styleClass="labels" value="Subcoordenador SCRE" />
<h:inputText id="subcoordenadorSCCE" value="#{parametroBean.parametroAtual.subCoordenadorSCCE}" maxlength="45" required="#{diplomaBean.semPendencia and diplomaBean.novo}" disabled="#{not diplomaBean.novo}" requiredMessage="Campo Subcoordenador SCCE não preenchido" size="75" />
<h:outputText styleClass="labels" value="Subcoordenador SCRD" />
<h:inputText id="subcoordenadorSCRD" value="#{parametroBean.parametroAtual.subCoordenadorSCRD}" maxlength="45" required="#{diplomaBean.semPendencia and diplomaBean.novo}" disabled="#{not diplomaBean.novo}" requiredMessage="Campo Subcoordenador SCRD não preenchido" size="75" />
</h:panelGrid>
</rich:panel>
...
Segue abaixo trecho da classe DiplomaBean
public class DiplomaBean {
private Diploma diploma = new Diploma();
private List<Diploma> diplomas;
public Diploma getDiploma() { return diploma; }
public void setDiploma(Diploma diploma) { this.diploma = diploma; }
public List<Diploma> getDiplomas() { return diplomas; }
public void setDiplomas(List<Diploma> diplomas) { this.diplomas = diplomas; }
....
/**
* Managed-beans auxiliares
*/
...
private ParametroBean parametroBean = new ParametroBean(); // aqui está a composição
...
Trecho da classe Parametro
@Entity(name="PARAMETROS")
public class Parametro {
@Id
@Column(name="PAR_ID")
@SequenceGenerator(name="par_generator",sequenceName="SEQ_PAR",allocationSize=1)
@GeneratedValue(strategy=GenerationType.AUTO,generator="par_generator")
private int id;
@Column(name="PAR_PRO_REITOR")
private String proReitor;
@Column(name="PAR_COORD_ESC")
private String coordEscolaridade;
@Column(name="PAR_SUB_COORD_SCCE")
private String subCoordenadorSCCE;
@Column(name="PAR_SUB_COORD_SCRD")
private String subCoordenadorSCRD;
@Column(name="PAR_ATIVADO")
private boolean ativado;
@Temporal(TemporalType.DATE)
@Column(name="PAR_DT_ENTRADA")
private Date dataEntrada;
public Parametro(){}
public Parametro(String proReitor, String coordEscolaridade, String subCoordenadorSCCE,
String subCoordenadorSCRD ){
this.proReitor = proReitor;
this.coordEscolaridade = coordEscolaridade;
this.subCoordenadorSCCE = subCoordenadorSCCE;
this.subCoordenadorSCRD = subCoordenadorSCRD;
}
...
/* gets e sets*/
}
Trecho de código da classe ParametroBean
public class ParametroBean {
FachadaUtil fachadaUtil = FachadaUtil.getInstance();
FachadaCadastros fachadaCadastros = FachadaCadastros.getInstance();
FachadaAtualizacao fachadaAtualizacao = FachadaAtualizacao.getInstance();
FachadaRemover fachadaRemover = FachadaRemover.getInstance();
private Parametro parametro = new Parametro();
private List<Parametro> parametros = new ArrayList<Parametro>();
private Parametro parametroAtual = this.getParametroAtual();
private boolean updateMode = false;
...
// metodo para obter o conjunto atual de parametros
public Parametro getParametroAtual() {
return fachadaUtil.findParametroAtual();
}
...
que chama a classe FachadaUtil onde temos
...
public Parametro findParametroAtual() {
return parametroControl.findParametroAtual();
}
...
que chama a classe parametroControl onde temos
...
public Parametro findParametroAtual() {
try {
pDao.begin();
Parametro p = pDao.findParametroAtual();
return p;
} catch (Exception e) {
return null;
} finally {
pDao.close();
}
}
E finalmente na classe ParametroDao temos
...
public Parametro findParametroAtual() {
return (Parametro) super.findByQuery("select p from PARAMETROS p where p.ativado = true");
}
....
Ao carregar a página de cadastro de Diplomas, a sequência de chamada de métodos das camadas ParametroBean -> FachadaUtil -> ParametroControle -> ParametroDao, deveria
ter gerado na tela algo como
Parametros Atuais
Pró-Reitor : Waldir
Subcoordenador de Escolaridade : Raimundo
Subcoordenador SCCE : Gilvan
Subcoordenador SCRD : Paulo
Alguma coisa no carregamento da página de cadastro está “limpando” os componentes <h:outputext> que deveriam estar preenchidos como mostrei acima.
Todos os outros campos da página devem vir em branco, mas estes já deveriam estar preenchidos automaticamente através do método supracitado.
Alguém pode me ajudar ?
[/code]