Ola,
Sou iniciante em JSF e gostaria de saber como faço para pegar um managedbean que encontra-se na sessao, atraves de outro managedbean.
[code]AtividadesFerramenta atividadesFerramenta = (AtividadesFerramenta) recuperarBean("#{atividadesFerramenta}", AtividadesFerramenta.class);
public Object recuperarBean(String expressaoELBean, Class<?> classeBean) {
FacesContext fCtx = FacesContext.getCurrentInstance();
ELContext elCtx = fCtx.getELContext();
ExpressionFactory ef = fCtx.getApplication().getExpressionFactory();
ValueExpression ve = ef.createValueExpression(elCtx, expressaoELBean, classeBean);
return ve.getValue(elCtx);
}[/code]
Atraves do uso desse metodo, eu recupero o bean que eu quero, mas pelo q me pareceu, eu recebo uma nova instancia do bean, quando na verdade eu gostaria de receber o bean ja preenchido com os atributos que foram anteriormente preenchidos e estao na sessao. (ambos os beans tem escopo session).
Obrigado por qualquer ajuda.
Abraços,
Gustavo Barbosa
/**
* Recupera um bean gerenciado pelo contexto atual.
* @param name Nome do bean.
* @return Bean encontrado ou <code>null</code> se não houver um bean com o nome especificado.
*/
public static Object getBean(String nome) {
Object bean = null;
if (nome == null || nome.equals(""))
throw new IllegalArgumentException("Parâmetro inválido: nome.");
FacesContext contexto = FacesContext.getCurrentInstance();
Application app = contexto.getApplication();
bean = app.createValueBinding("#{" + nome + "}").getValue(contexto);
return bean;
}
/**
* Atribui um bean ao contexto atual da aplicação.
* @param nome Nome do bean
* @param bean Bean a ser mantido no contexto.
*/
public static void setBean(String nome, Object bean) {
if (nome == null || nome.equals(""))
throw new IllegalArgumentException("Parâmetro inválido: nome.");
if (bean == null)
throw new IllegalArgumentException("Parâmetro inválido: bean.");
FacesContext contexto = FacesContext.getCurrentInstance();
Application app = contexto.getApplication();
app.createValueBinding("#{" + nome + "}").setValue(contexto, bean);
}