最近在mac上做項目,很多老的項目總是報一些莫明其妙的問題,比如下面這個:
在index.jsp中有一個include标簽:
<jsp:includeflush="true"page="tenCtaHomePageCommonInfo.do"></jsp:include>
首頁打開的時候,總是報這個錯:
Stacktrace:] with root cause
org.apache.jasper.JasperException: /indexInfo/tenPointRankInfo.jsp (line: 64, column: 17) According to TLD or attribute directive in tag file, attribute test does not accept any expressions
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:408)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:149)
仔細看了一下,發現是.do跳轉後的/indexInfo/tenPointRankInfo.jsp頁面出現了問題,再百度上搜尋出錯資訊後,發現如下解決方案:
方案一:
-----------------------------------------------------------------
解決方法有2個 1、将<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%> 更改為 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2、使用JSTL的備用庫, 将<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%> 更改為 <%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%> |
使用第二種方案,問題解決! 但是有一個問題,那就是所有涉及該問題的頁面都要手動改一次(或者批量替換),感覺不是很好的解決辦法。
方案二:
----------------------------------------------------------------
打開 web.xml,看到這樣的寫法,頭部是這個:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
由于沒有關于版本的描述,tomcat7預設就按新的規範要求了,是以在此處把版本指定為2.3即可,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
重新開機服務,所有頁面都正常了!
參考文章: http://hellodao.blog.sohu.com/136860462.html
http://hi.baidu.com/zhaotao_king/item/9de216c01be8e742a8ba944a
http://hi.baidu.com/tsuny/item/198a7616e72afde45f53b111