分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

jsp泛型支持

发布时间:2023-09-06 01:46责任编辑:熊小新关键词:jsjsp
  • 今天在使用idea做练习时,某个jsp页面报错如下: 
    ‘<>‘operator is not allowed for source level below 1.7 
    出错代码如下: 
    Map<String, String> genders = new HashMap<>(); 
    不难看出报错的原因是编译版本低于1.7时,’<>’这种省略类型的泛型语法不可用。
  • 搜索该错误,得到的答案大约为两种: 
    1. 大部分复制粘贴的答案都是在eclipse中遇见的该错误,解决方案是设置项目的java编译版本和jdk版本为1.7及以上。检查了我的idea的相关设置,都是1.8的版本没问题,该答案没有解决我的问题;
    2. 在使用泛型时不要写省略语法: 
      Map<String, String> genders = new HashMap<String, String>(); 
      可是这样等于使用了老版本的java语法,并没解决根本问题
  • 解决方法: 
    这里的问题其实是本地安装的tomcat中配置的jsp编译版本是低于1.7的,而设置IDE中的编译版本并不能解决这个问题,这里需要找到本地tomcat的安装目录下的web.xml文件,路径如下:\Tomcat\Tomcat7.0\conf\web.xml,打开以后找到JspServlet的配置如下:
 1 ????<servlet> 2 ????????<servlet-name>jsp</servlet-name> 3 ????????<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 4 ????????<init-param> 5 ????????????<param-name>fork</param-name> 6 ????????????<param-value>false</param-value> 7 ????????</init-param> 8 ????????<init-param> 9 ????????????<param-name>xpoweredBy</param-name>10 ????????????<param-value>false</param-value>11 ????????</init-param>12 ????????<load-on-startup>3</load-on-startup>13 ????</servlet>

在其中添加jsp编译版本的设置:

1 ????<init-param>2 ????????<param-name>compilerSourceVM</param-name>3 ????????<param-value>1.8</param-value>4 ????</init-param>5 ????<init-param>6 ????????<param-name>compilerTargetVM</param-name>7 ????????<param-value>1.8</param-value>8 ????</init-param> 

保存,OK,然后要记得在IDE中重新发布项目(注意清理缓存),在访问原来出问题的jsp页面,这次就不会报错了~

    • 涉及到的各个工具及版本: 
      IntelliJ IDEA 2017.1 x64 
      Tomcat 7.0 
      jdk1.8.0_65

jsp泛型支持

原文地址:https://www.cnblogs.com/evilliu/p/8645507.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved