Ola tudo bem pessoal, eu sou novo aqui, nem tão novo, mas sempre acompanhei o fórum sem me manifestar, pois gosto das discussões(no bom sentido) que acontecem aqui e porque conheço alguns que freqüentam o fórum, amigos e até alguns que ja me deram aula rsrsr.
Eu tenho uma dúvida:
Me mandaram substituir o codigo de um selectOneMenu por um treeview do richfaces.
Mas daí vieram os problemas:
1- Eu consigo fazer os dados virem de forma correta para o treeview, mas não consigo setar esse valor para uma variavel no Beam, recebo um erro notificando que minha variavel é nula.Ou seja preciso selecionar um valor nó da treeview, clicar em um botão next, enviar em forma de objeto para uma variavel que esta no bean.
2- Estou usando o Jboss seam, é um projeto legado , nem em sonho posso mudar a estrutura do mesmo.
Abaixo vai o codigo do SelecteOneMenu:
<h:selectOneMenu id="unit" value="#{analiseHome.unit}" required="true">
<f:selectItems value="#{analiseHome.listaUnidades}"/>
<f:converter converterId="unitConverter" />
</h:selectOneMenu>
Agora o codigo do beam “AnaliseHome”
@Name("analiseHome")
public class AnaliseHome extends EntityHome<AnaliseHome> {
.
@In
private Map<String, String> messages;
@Logger
protected Log log;
private String graphicType;
private Unidade unit;
private Variavel variable;
private List<SelectItem> opcoesGrafico;
private String unitId;
public void setUnitId(String unitId){
unitId = unitId;
}
public String getUnitId() {
return unitId;
}
public Unidade getUnit() {
return unit;
}
public void setUnit(Unidade unit) {
this.unit = unit;
}
public List<Unidade> getParentUnits() {
EntityManager em = getEntityManager();
return em.createNamedQuery("find_unidade_All_parent").getResultList();
}
public Variavel getVariable() {
return variable;
}
public void setVariable(Variavel variable) {
this.variable = variable;
}
public ArrayList<SelectItem> getListaUnidades() {
ArrayList<SelectItem> retval = new ArrayList<SelectItem>();
String cmd = "select u from Unidade u order by u.nome";
EntityManager em = getEntityManager();
List<Unidade> unidades = em.createQuery(cmd).getResultList();
for (Unidade un : unidades) {
retval.add(new SelectItem(un, un.toString()));
}
return retval;
}
public ArrayList<SelectItem> getListaVariaveis() {
ArrayList<SelectItem> retval = new ArrayList<SelectItem>();
Query q = null;
// if(variable != null){
// q = super.getEntityManager().createQuery("select v from Variavel v where
// v.periodo.tipoMedDispersao=:tipo order by v.nome");
// q.setParameter("tipo", variable.getPeriodo().getTipoMedDispersao());
// }else{
q = super.getEntityManager().createQuery("select v from Variavel v order by v.nome");
// }
List<Variavel> variaveis = q.getResultList();
for (Variavel vr : variaveis) {
retval.add(new SelectItem(vr, vr.toString()));
}
return retval;
}
public List<AnaliseSXBarra> getAnaliseSX() {
Query q = super.getEntityManager().createQuery(BUSCA_ANALISES);
q.setParameter("unid", this.unit.getId());
q.setParameter("vari", this.variable.getId());
q.setParameter("tipo", 1);
List<AnaliseSXBarra> analise = q.getResultList();
return analise;
}
public List<AnaliseRXBarra> getAnaliseRX() {
Query q = super.getEntityManager().createQuery(BUSCA_ANALISES);
q.setParameter("unid", this.unit.getId());
q.setParameter("vari", this.variable.getId());
q.setParameter("tipo", 2);
List<AnaliseRXBarra> analise = q.getResultList();
return analise;
}
public List<AnaliseRmXBarra> getAnaliseRmX() {
Query q = super.getEntityManager().createQuery(BUSCA_ANALISES);
q.setParameter("unid", this.unit.getId());
q.setParameter("vari", this.variable.getId());
q.setParameter("tipo", 5);
List<AnaliseRmXBarra> analise = q.getResultList();
return analise;
}
public List<AnaliseRmXmBarra> getAnaliseRXM() {
Query q = super.getEntityManager().createQuery(BUSCA_ANALISES);
q.setParameter("unid", this.unit.getId());
q.setParameter("vari", this.variable.getId());
q.setParameter("tipo", 6);
List<AnaliseRmXmBarra> analise = q.getResultList();
return analise;
}
public List<AnaliseParetto> getAnaliseParetto() {
Query q = super.getEntityManager().createQuery(BUSCA_ANALISES);
q.setParameter("unid", this.unit.getId());
q.setParameter("vari", this.variable.getId());
q.setParameter("tipo", 4);
List<AnaliseParetto> analise = q.getResultList();
return analise;
}
public String etapa2() {
log.debug("Entrou em etapa2()...");
log.debug("Unidade = " + unit);
log.debug("Variável = " + variable);
opcoesGrafico = new ArrayList<SelectItem>();
if (variable.getPeriodo().getTipoMedDispersao() == MedidaDispersao.STDDEV) {
opcoesGrafico.add(new SelectItem("" + MedidaDispersao.STDDEV, messages.get("spc_Analysis_Type_STDDEV")));
}
if (variable.getPeriodo().getTipoMedDispersao() == MedidaDispersao.RANGE) {
opcoesGrafico.add(new SelectItem("" + MedidaDispersao.RANGE, messages.get("spc_Analysis_Type_RANGE")));
}
if (variable.getPeriodo().getTipoMedDispersao() == MedidaDispersao.SLIDINGRANGE) {
opcoesGrafico.add(new SelectItem("" + MedidaDispersao.SLIDINGRANGE,
messages.get("spc_Analysis_Type_SLIDINGRANGE")));
}
if (variable.getPeriodo().getTipoMedDispersao() == MedidaDispersao.SLIDINGRANGE_SLIDINGMEAN) {
opcoesGrafico.add(new SelectItem("" + MedidaDispersao.SLIDINGRANGE_SLIDINGMEAN,
messages.get("spc_Analysis_Type_SLIDINGRANGE_SLIDINGMEAN")));
}
opcoesGrafico.add(new SelectItem("" + MedidaDispersao.PARETO, messages.get("spc_Analysis_Type_PARETO")));
return "/spc/analysis2.xhtml";
}
public String etapa3() {
log.debug("Entrou em etapa3()...");
log.debug("Unidade = " + unit);
log.debug("Variável = " + variable);
super.getApplicationContext().set("unidade", unit);
super.getApplicationContext().set("variavel", variable);
String proximaPagina = null;
if (graphicType.equals("" + MedidaDispersao.STDDEV)) {
proximaPagina = "/spc/analysisSxBarList.xhtml";
}
if (graphicType.equals("" + MedidaDispersao.RANGE)) {
proximaPagina = "/spc/analysisRxBarList.xhtml";
}
if (graphicType.equals("" + MedidaDispersao.SLIDINGRANGE)) {
proximaPagina = "/spc/analysisRxmBarList.xhtml";
}
if (graphicType.equals("" + MedidaDispersao.SLIDINGRANGE_SLIDINGMEAN)) {
proximaPagina = "/spc/analysisRmxBarList.xhtml";
}
if (graphicType.equals("" + MedidaDispersao.PARETO)) {
proximaPagina = "/spc/analysisParetoList.xhtml";
}
log.debug("Próxima página = " + proximaPagina);
return proximaPagina;
}
public List<SelectItem> getOpcoesGrafico() {
return opcoesGrafico;
}
public void setOpcoesGrafico(List<SelectItem> opcoesGrafico) {
this.opcoesGrafico = opcoesGrafico;
}
public String getGraphicType() {
return graphicType;
}
public void setGraphicType(String graphicType) {
this.graphicType = graphicType;
}
}
Agora o codigo da tree View
<rich:tree id="treeView" style="width:300px;margin-left:50px;" switchType="ajax" >
<rich:recursiveTreeNodesAdaptor roots="#{analiseHome.parentUnits}" var="item" nodes="#{item.subUnidades}">
<rich:treeNode selectedClass="selectedTree" ajaxSingle="true" ajaxSubmitSelection="true">
</rich:treeNode>
</rich:recursiveTreeNodesAdaptor>
</rich:tree>
Obrigado aos que puderem me ajudar…