今天遇到一個很有趣的問題,有個系統要從舊的環境移到新的環境,在程式碼沒有變動的情況下,新環境會出現這個錯誤,由於舊的環境 JDK 跟 Tomcat 真的是太舊了,會有這些錯誤不意外,環境不一致所造成的不相容也只好慢慢修掉。

今天收到內容單位的來信,要求把這個 500 Error 修掉,前陣子有其他事情要忙,一直拖到今天才處理,根據錯誤訊息查詢了一下,前幾篇就找到答案了,這邊小蛙把錯誤訊息列一下

org.apache.jasper.JasperException: /System/User.jsp (line: 3, column: 0) Expecting "jsp:param" standard action with "name" and "value" attributes
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:408)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:89)
    org.apache.jasper.compiler.Parser.parseParam(Parser.java:825)
    org.apache.jasper.compiler.Parser.parseBody(Parser.java:1670)
    org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1002)
    org.apache.jasper.compiler.Parser.parseInclude(Parser.java:854)
    org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1116)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1449)
    org.apache.jasper.compiler.Parser.parse(Parser.java:138)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

有好幾個頁面都會出現這個錯誤,Google之後發現這是一件有趣的事情,舊環境上沒有這個問題,新環境才會發生(也許跟 JDK, Tomcat 版本有關,沒有時間特別去測…),根據問題的敘述小蛙找到該行看一下到底是什麼原因引起的

<jsp:include page="A.jsp">
</jsp:include>

左看右看上看下看,看起來好像很正常,有開始的 tag 也有結束的 tag,為什麼會報錯呢?原來在比較新的環境上,也許是對這方面的語法比較要求,解決的方法一共有三種,很簡單卻也令人無言 …

  • 方法一:把沒有參數的 tag 直接關閉掉
<jsp:include page="A.jsp" />
  • 方法二:把沒有參數的 tag 寫在同一行
<jsp:include page="A.jsp"></jsp:include>
  • 方法三:把沒有參數的 tag,也傳一份空值進去符合格式
<jsp:include page="A.jsp">
  <jsp:param name="" value="" />
</jsp:include>

這樣”簡單”的解決方式,有沒有讓人覺得牙癢癢呢?

 

參考資料

  1. jsp的标签<jsp:include>的用法 @ CSDN 論壇
    http://topic.csdn.net/t/20060407/20/4671180.html
  2. JasperException: Expecting “jsp:param” standard action with “name” and “value” attributes @ www.giannistsakiris.com
    http://www.giannistsakiris.com/index.php/2007/08/23/
  3. JSP – Expecting “jsp:param” standard action with “name” and “value” attributes @ stackoverflow
    http://stackoverflow.com/questions/2092665/
相關文章

Android Vuforia with jPCT-AE (5) – 多重模型載入,以 obj 為例

要進到這系列最後一篇文章了,這篇文章拖了很久,一直沒有時間整理,結果到最後 ... 程式碼留下來了,記憶卻有些模糊了,這邊小蛙配著程式碼盡可能的把還記得的東西寫下來。
2016-07-06 11:24:19
hans

18

Android Vuforia with jPCT-AE (4) – 載入 3DS 測試

延續 jPCT-AE Loader 載入模型的部份,這篇要記錄載入 3ds 檔案格式的方法,基本上跟前面幾個 obj, md2 的方法差不多,只有一些小小的變化而已。
2016-07-06 10:24:33
hans

18

Android Vuforia with jPCT-AE (3) – 載入 md2 測試

前兩篇介紹如何直接透過 jPCT-AE 直接繪圖以及載入 .obj 檔案,這邊繼續介紹 jPCT-AE 載入 md2 的方法,載入動作大致上類似,唯一不同的只有 texture 設定部份。
2016-07-06 09:24:43
hans

18

Android Vuforia with jPCT-AE (2) – 載入 obj 測試

上一篇 Android Vuforia with jPCT-AE (1) –
2016-07-06 08:24:55
hans

18

Android Vuforia with jPCT-AE (1) – 基本範例

說來慚愧,從 Google Adsense 被 ban 之後,就好久沒有發文了,站上 Vuforia 的文章也已經是好久以前的事情了 (遠目),最近有專案要用到 Vuforia,爬以前的文回來看,蛙哩咧 ... 現在已經更新到 Vu
2016-07-06 07:57:58
hans

18

Android Tabhost with FragmentActivity

(2013-01-30 更新) 接續Android TabHost
2012-02-29 23:26:55
hans

18

Android TabHost Without TabActivity

2012-02-25 13:47:50
hans

18

Google AdWhirl with Vpon

(2012-07-20 更新)前面幾篇小蛙陸續介紹了Google AdWhirl串接kuAD, AdMob,以及單獨使用AdMob(單獨使用Vpon或kuAD只要直接下載匯入範例就可以囉!),今天要來記錄
2012-01-08 20:21:03
hans

18

Google AdWhirl with kuAD

(2012-04-06 更新)接續上一篇,小蛙繼續記錄使用Google AdWhirl銜接kuAD,kuAD是由kuSOGI
2012-01-07 16:21:10
hans

18

AdWhirl with AdMob by Google

AdWhirl是一套廣告輪播平台,開發者如果同時有許多廣告商,例如:AdMob, Vpon, KuAD …等等,就可以透過AdWhi
2012-01-07 13:59:22
hans

18




 回覆

你可以使用以下語法 HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

(required)

(required)

   
© 2012 蛙齋 Suffusion theme by Sayontan Sinha