Essa solucao para MB seria gambiarra?

0 respostas
thimor

Ola,
Nao queria usar @SessionScoped, e a unica solucao que achei para nao usar o session foi dessa forma? Porque quando eu uso o @RequestScoped, a pagina nao aciona o metodo alterar(). Outra coisa que achei estranha eh que com o request se eu carregar o datamodel no metodo init() no scopo de request a navegacao entre as paginas funciona perfeitamente, cadastrar, alterar,listar,excluir. Mas se eu executar pesquisar apos, e seleciona na lista, nao funciona. Entao com o viewscoped colocando o atributo na sessao e depois removendo deu ideia de gambiarra, ou a mesma coisa de usar sessao.

Mas usando dessa forma, economizaria recursos do servidor ou da na mesma coisa de usar sessao?

`@ManagedBean
@ViewScoped
public class SecaoController implements Serializable {

private Secao secao;
private SecaoDao dao = new SecaoDao();
private String parametroPesquisa;
private DataModel<Secao> secoes;

public SecaoController() {
}

@PostConstruct
public void init() {
    secao = (Secao) FacesUtil.recuperarDaSessao("secao");
    if (secao == null) {
        secao = new Secao();
    }
    secoes = new ListDataModel<>();
}

public Secao getSecao() {
    return secao;
}

public void setSecao(Secao secao) {
    this.secao = secao;
}

public DataModel<Secao> getSecoes() {
    return secoes;
}

public void setSecoes(DataModel<Secao> secoes) {
    this.secoes = secoes;
}

public String getParametroPesquisa() {
    return parametroPesquisa;
}

public void setParametroPesquisa(String parametroPesquisa) {
    this.parametroPesquisa = parametroPesquisa;
}


/*
 *  CRUD
 */
public String cadastrar() {
    secao = new Secao();
    return "cadastrar.faces";
}

public String salvar() {
    dao.salvar(secao);
    secao = new Secao();
    FacesUtil.removerDaSessao("secao");
    return "pesquisar.faces";
}

public String alterar() {
    secao = secoes.getRowData();
    FacesUtil.salvarEmSessao("secao", secao);
    return "alterar.faces";
}

public String excluir() {
    return null;
}

public void listar() {
    secoes = new ListDataModel<>(dao.listar(parametroPesquisa));
}

}

`

Criado 18 de maio de 2016
Respostas 0
Participantes 1