1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Acessar Controller Vraptor.

Olá!

Como faço para acessar um Controller a partir de outro?

Tenho um Controller chamado AcessoController que é de Sessão, e gostaria de acessar os atributos por outros controller's.

Tentei receber o AcessoController no construtor mais não 'funfo'.

Aguardo, grato.

Código:

No Controller abaixo tenho a variável sessaoUtil que eu gostaria de compartilhar em todos os meus Controller's.

@Controller
public class AcessoController implements Serializable {

    @Inject
    private Result result;

    @Inject
    private SessaoUtil sessaoUtil;

    public AcessoController() {

    }

    /**
     *
     * Redireciona para página de Login/Acesso. Disponibiliza uma lista de
     * estados na view.
     *
     */
    public void login() {

        sessaoUtil.setCodigoUnidadeGestora("PortalBS");

        UnidadeGestoraDAO unidadeGestoraDAO = new UnidadeGestoraDAO(sessaoUtil.getCodigoUnidadeGestora());

        /**
         *
         * Listando apenas os estados das unidades gestoras.
         *
         */
        List<Estado> estados = new ArrayList<>();

        for (UnidadeGestora ug : unidadeGestoraDAO.listarUnidadeGestoras()) {

            if (!estados.contains(ug.getMunicipio().getEstado())) {

                estados.add(ug.getMunicipio().getEstado());

            }

        }

        result.include("estados", estados);

    }

    /**
     *
     * Efetua o login.
     *
     * @param exercicio
     * @param unidadeGestora
     *
     */
    public void doLogin(String exercicio, int unidadeGestora) {

        sessaoUtil.setExercicio(exercicio);

        sessaoUtil.setCodigoUnidadeGestora(new UnidadeGestoraDAO(sessaoUtil.getCodigoUnidadeGestora())
                                                                           .getUnidadeGestoraPorId(unidadeGestora)
                                                                           .getCodigoUnidadeGestora());

        result.redirectTo(HomeController.class).home();

    }

    /**
     *
     * Lita os municipios por estado e unidades gestoras
     *
     * @param estadoId
     *
     */
    @Get("/acesso/municipios")
    public void getMunicipios(int estadoId) {

        UnidadeGestoraDAO unidadeGestoraDAO = new UnidadeGestoraDAO(sessaoUtil.getCodigoUnidadeGestora());

        List<Municipio> municipios = new ArrayList<>();

        /**
         *
         * Listando apenas os municípios com unidades gestoras cadastradas.
         *
         */
        for (UnidadeGestora ug : unidadeGestoraDAO.listarUnidadeGestoras()) {

            if (!municipios.contains(ug.getMunicipio()) && ug.getMunicipio().getEstado().getId() == estadoId) {

                municipios.add(ug.getMunicipio());

            }

        }

        result.use(Results.json()).withoutRoot().from(municipios).serialize();

    }

    /**
     *
     * Lita as unidades gestoras por municipio
     *
     * @param unidadeGestoraId
     *
     */
    @Get("/acesso/unidades-gestoras")
    public void getUnidadesGestoras(int unidadeGestoraId) {

        List<UnidadeGestora> unidadesGestoras = new UnidadeGestoraDAO(sessaoUtil.getCodigoUnidadeGestora())
                                                                                .listarUnidadeGestoras(unidadeGestoraId);

        result.use(Results.json()).withoutRoot().from(unidadesGestoras).serialize();

    }

}

Neste outro tento acessar os atributos contidos no objeto sessionUtil:

/**
 *
 * @author Daniel
 * 
 */

@Controller
public class OrgaoController {

    @Inject
    private Result result;

    @Inject
    private SessaoUtil sessaoUtil;

    public OrgaoController(){



        System.out.println(sessaoUtil.getCodigoUnidadeGestora()); //Imprime null

    }

    public void list(){


    }

}

SessionUtil

@SessionScoped
public class SessaoUtil implements Serializable {

    private String codigoUnidadeGestora;

    private String exercicio;

    public String getCodigoUnidadeGestora() {
        return codigoUnidadeGestora;
    }

    public void setCodigoUnidadeGestora(String codigoUnidadeGestora) {
        this.codigoUnidadeGestora = codigoUnidadeGestora;
    }

    public String getExercicio() {
        return exercicio;
    }

    public void setExercicio(String exercicio) {
        this.exercicio = exercicio;
    }

}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags vraptor ou faça a sua própria pergunta.