2
respostas

Acessando em um método duas variáveis de outro método passado como parâmetro de uma url!

Estou tentando acessar duas variáveis de um método em outro método dentro de uma mesma classe, o que me esta dando problemas é que estes dois métodos carregam outras variáveis como parâmetro e não estou conseguindo acessar apenas essas duas. Tem alguma regra para isso ou algum macete para que eu possa trazer apenas essas duas variáveis?

@RequestMapping(value = "/datas/{mes}/{ano}", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody void filtroMesAno(HttpServletResponse response, HttpServletRequest request,
            @PathVariable("mes") String mes, @PathVariable("ano") String ano) throws Throwable{

        String dataAntUrl = "", dataAtuUrl = "", dataPosUrl = "";

        // Essas duas variáveis devo enviar para outro método
        String getMes = mes;
        String getAno = ano;

        YearMonth getDataUrl = YearMonth.parse(mes + "/" + ano, formataDataUrl);

        dataAntUrl = getDataUrl.minusMonths(1).format(formataDataUrl);
        dataAtuUrl = getDataUrl.format(formataDataUrl);
        dataPosUrl = getDataUrl.plusMonths(1).format(formataDataUrl);

        JSONObject obj = new JSONObject();

        try {
            obj.put("dataAntUrl", dataAntUrl);
            obj.put("dataAtuUrl", dataAtuUrl);
            obj.put("dataPosUrl", dataPosUrl);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        String jsonString = obj.toString();

        try {
            response.getWriter().print(jsonString);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
@RequestMapping(value = "listJson", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody void doPost(HttpServletRequest request, HttpServletResponse response) throws Throwable {

        // Supostamente devo receber duas variáveis do tipo String que vem de outro método
        String mes = "02", ano = "2017";

        List<MinhasReceitas> listMinhasReceitas = receitasService.buscarPorAno(mes, ano);

        ObjectWriter objW = new ObjectMapper().writer().withDefaultPrettyPrinter();

        DataTableMinhasReceitas dataTableMinhasReceitas = new DataTableMinhasReceitas();

        dataTableMinhasReceitas.setData(listMinhasReceitas);

        String json = objW.writeValueAsString(dataTableMinhasReceitas).toString();

        response.getWriter().print(json);

        System.out.println("Lista retornada com todos os itens: " + json);
    }
2 respostas

Olá Clerman, tudo bem? Seguindo as boas práticas de nomenclatura do Java, troque:

void FiltroMesAno

por

void filtroMesAno

Todo método começa com letra minúscula. Sobre a sua pergunta, para ter acesso a duas variáveis em métodos diferentes coloque-as como atributo de sua classe, ou melhor ainda, crie um objeto para armazenar os valores de mês e ano e passe a utilizar ele em ambos os métodos.

Abraço!

Olá Otávio, havia pensado nessa hipótese, mas, como essas duas variáveis vem da minha página web e preciso pegar elas em tempo de execução, não vai consumir mais banda do usuário? Teria uma forma mais enxuta para isso?

Obrigado!