Boa noite galera. Sou novato na utilização do Maven. Eu criei um projeto Web utilizando o Maven e reparei que as chamadas EL pararam de funcionar. Pesquisando na web, descobri que o cabeçalho do arquivo web.xml gerado pelo Maven, desabilita por padrão a utilização da EL. Também descobri como habilitar a EL diretamente em uma página JSP utilizando a tag:
<%@ page isELIgnored=”false” %>
Minha dúvida é, como tornar a habilitar a EL para todas as páginas JSP?
Obrigado.
O Maven não cria dinamicamente o arquivo web.xml, talvez você tenha criado um projeto a partir de um archetype cujo web.xml esteja com esta configuração que você menciona. Se puder postar o link do material que você encontrou podemos analisar melhor.
Caso você apenas queira o cabeçalho correto do web.xml, aqui tem os modelos para diversas versões:
https://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/
Olá Weiler,
tudo bem?
Valeu por compartilhar o link. Já salvei no favoritos ")
Estou criando um projeto Maven diretamente do Eclipse (Eclipse Java EE IDE for Web Developers. | Version: Neon Release (4.6.0)). Os passos são estes:
1- Novo arquivo (CTRL + N) > Maven Project
2- Apenas a opção “Use default location” marcada
3- Seleciono “maven-archetype-webapp” version 1.0
4- Nome do GroupID e ArtifactID > finish
Após finalizar a criação, navego até a pasta WEB-INF no seguinte caminho:
src > main > webapp > WEB-INF
E o arquivo web.xml já está criado. O cabeçalho que ele possui é:
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
Ao incluir o trecho abaixo dentro da tag <web-app … o Eclipse acusa erros em todos os atributos (xmlns, xmlns:xsi, xsi:schemaLocation e em version):
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
</web-app>
Ao remover o <!DOCTYPE ... >
os erros desaparecem mas não consigo mais iniciar o TomCat. Mantendo o<!DOCTYPE ... >
, mesmo com os erros exibindo no web.xml, o TomCat inicia e consigo acessar a página mas ainda sim, a EL não funciona sem que eu declare manualmente na página JSP.
Tem alguma idéia de como devo realizar a configuração?
Obrigado.
Abraço.
Ok, DOCTYPE deve ser utilizado quando não possuir os atributos de definição no próprio tipo. Tenho projetos com servlet 2.5 e 3.1 sem DOCTYPE sem problemas no eclipse, talvez após a sua alteração de versões os facets do projeto não tenham atualizado, verifique que a versão do facet coincida com a versão declarada do web.xml. É bom também garantir que o maven esteja definido com as versões adequadas para o eclipse se autoconfigurar. A versão servlet mínima para EL é a 2.5.
Após verificar as configurações de versões dos facets, verifique se seu web.xml possui a configuração <el-ignored>true</el-ignored>
.
Bom dia Weiler,
tudo bem?
Você tem razão. Fui verificar a configuração do Facets do projeto e o que encontrei foi o seguinte:
Dynamic Web Module: 2.3
Java: 1.5
Entretanto, não é possível simplesmente mudar a versão do modulo web e precisei realizar outras alterações. Como podem haver outras pessoas com o mesmo problema que eu, vou compartilhar passo a passo o que fiz depois das suas dicas.
1- No Eclipse (estou utilizando a versão Neon), CTRL + N > Maven Project > Marquei apenas a opção “Use default Workspace location” > Selecionei “maven-archetype-webapp version 1.0” > inseri o nome do group e artifact.
2- Botão direito em cima do nome do projeto > Properties > Project Faces
2.1- Desativei o módulo Web (Dynamic Web Module)
2.2- Alterei a versão do Java para 1.7 e cliquei no botão Apply
2.3- Alterei a versão do módulo Web, por exemplo para versão 3.0, ativei o módulo novamente e cliquei no botão Apply. Apenas para conhecimento: Neste momento uma pasta WebContent é criada e o arquivo pom.xml do Maven passa a apresentar um erro (web.xml is missing and is set to true) na tag <packaging>war</packaging>
2.4- Do lado direito parte superior, cliquei na guia Runtimes e marquei meu servidor de aplicação, no meu caso o Tomcat v7. Cliquei no botão Apply e Ok
3- Deletei a pasta WebContent
4- Novamente botão direito em cima do nome do projeto > Properties > Deployment Assembly > Botão Add > Folder > Selecionei src/main/webapp > Finish. Cliquei no botão Apply e Ok
5- CTRL + N > Java, subitem Source Folder
5.1- No campo Folder name, inclui: src/main/webapp e cliquei no botão Finish.
Ufa…rsrs ao final destes passos o Eclipse não apresenta mais nenhum erro e a Expression Language voltou a ficar ativa por padrão.
Weiler, conhece alguma maneira mais fácil, como por exemplo fazer o Maven já “setar” as versões corretas? Tentei atualizar o plugin M2E mas sem sucesso. O mesmo para as pesquisas que fiz.
Valeu!
Abraço.
Infelizmente a integração do maven no eclipse realmente apresenta alguns problemas de vez em quando, mas basicamente, deveria bastar apenas ir em Maven > Update Project
no menu de contexto do projeto, sendo necessário que o pom esteja com todas as configurações de versão e mesmo assim alguns facets podem falhar.
Tranquilo. Obrigado pelo apoio Weiler .
Abraço.