6
respostas

ECMASCRIPT 6 + JSP

Estou tentando usar a estrutura do ecmascript 6 em paginas jsp, mas não estou conseguindo. A minha dúvida é a seguinte: É completamente possível usar ecmascript 2015 em páginas jsp ou existe alguma configuração que deve ser feita? Estou criando as classes VS Code como no curso, importando no projeto, mas, não funciona. Por exemplo: eu criou um novo arquivo "Atividades.js", que contém a classe "Atividade", no construtor digo todos os atributos, crio o arquivo "AtividadeController.js", que contém a classe "AtividadeController", quando tento dar um "new Atividade(atributos)", só fica dando "Atividade not found", mesmo importando a classe e verificando no console que foi importado com status code 200. Quando tento na view declarar o meu controller como foi feito no curso:

<script>
        let negociacaoController = new NegociacaoController();
    </script>

É apresentado o mesmo erro, enfim, não estou conseguindo usar nada de ecmascript 6 em paginas jsp. Professor, por favor, poderia me ajudar?

6 respostas

Tiago, talvez o JSP tenha alguma incompatibilidade com o ES6, não posso afirmar com certeza. Mas você pode tentar transpilar o código usando o https://babeljs.io e ver se o código gerado pelo babel roda normalmente (o que deve acontecer :) )

Olha, você esta tendo algum problema na sua infraestrutura Java para conseguir carregar scripts. Se ele fica exibindo essa mensagem de erro é porque o script não foi carregado.

Tem que ver na sua infra Java o motivo disso, do não carregamento dos scripts. Veja, nem é problema de compatibilidade porque seu código nem foi carregado.

Veja, eu acredito que o script "AtividadeController" está sendo carregado corretamente porque no console do navegador na aba network eu verifico e vejo que está tudo ok, inclusive consigo até editar se eu quiser, mas quando tento fazer:

<script>
        let atividadeController = new AtividadeController();
    </script>

é me apresentado o erro:

Uncaught ReferenceError: AtividadeController is not defined

Se nesse exato momento eu verificar novamente no console do navegador se ele chegou a carregar o meu script, o status é 200 - ok, e eu consigo ter um preview do códgio, editar se eu quiser e tudo mais. O que será que está acontecendo?

Se você carregou o script e ele não esta sendo acessível, provavelmente você deve ter usado algum sistema de módulos ou module pattern evitando que a classe caia no escopo global. Apenas scripts carregados no escopo global podem fazer o que você tentou fazer.

Ou, o mais simples, você declarou o nome da classe errada e quando tenta instanciá-lo esta usando outro nome.

Professor Flávio, até o momento ainda não consegui usar ecmascript 6 em paginas jsp, mas venho compartilhar mais uma dor de cabeça que tive. Hoje precisei usar template string em uma pagina jsp, sendo que todo código javascript eu estava colocando na própria pagina jsp e não parava de retornar o seguinte erro:

Uncaught SyntaxError: Invalid or unexpected token

Foi quando separei o meu código javascript em outro arquivo, fora da página jsp e deu tudo certo. Obs: Não era a template string em si que acusava o erro, mas sim em um pequeno bloco de código onde eu utilizo map, muito semelhante com a forma que você usou no curso, veja:

return `
  <div>
    ${content.map(content => `{
       <div>
          ${content}
       </div>`
    } ).join('')} `;

Bom dia. Olha, você domina JSP, certo? Então, vamos lá.

JSP usa a sintaxe ${} para realizar interpolação de dados com o template. Se você escreve um código diretamente no template com a tag <script> e usa a interpolacão do template template string, o JSP achará que a interpolação é dele e você terá problemas.

Por isso quando você separou o problema terminou, porque como o conteúdo não esta mais dentro do jsp e sim em um arquivo em separado, o JSP tão tenta realizar nenhuma modificação.