JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Servlet/JSP 討論區 » JSTL/EL  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 解決 JSP 不能 Run EL 的問題 [精華]
jiaming





發文: 23
積分: 0
於 2004-05-12 16:18 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
原本 JSP 中沒有使用 EL,後來改成利用 EL 的方式。
發現 Tomcat 並不會跑修改後的結果。
原因在於在 JSP 頁中直接寫 EL 是 JSP2.0/servlet 2.4以後的版本,所以 web.xml 中必須宣告為
1
2
3
4
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">


但是修改後,跑更改成 EL 後的程式。
發現結果還是一樣,沒有作用。

試了好久才知道,原來 jsp 必須再重新 compiler 才會有作用。
也就是說,再把檔案故意修改一下再存檔,重新跑就行了。

原因在於 JSP 檔案支援 EL 的做法是在 compiler 的時候自動翻譯的。
試了好久,找了好多資料都沒提到。
原來是自己豬頭。

僅提供經驗分享囉。


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
ouching





發文: 1
積分: 0
於 2004-05-12 23:05 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
關於這個,我也提供一下我的經驗

最近我也因為換成了Tomcat 5
原本的jstl 變不能用el 而在苦惱這個問題
於是今天去看了J2EE 1.4 tutorial
找到了解答.......
其實只要在jsp頁面加上
1
<%@ page isELIgnored ="false" %>

就可以用el 了,我自己試過沒問題
(J2EE 1.4 tutorial, Chapter 12: JavaServer Pages Technology, Expression Language:: Deactivating Expression Evaluation)
----
不過話說回來
樓上的前輩可以找到那些資訊實在也夠厲害了


ouching edited on 2004-05-13 13:19
reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:ouching]
lsw0529

free life



發文: 63
積分: 1
於 2004-05-13 14:20 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
ouching wrote:
其實只要在jsp頁面加上
1
<%@ page isELIgnored ="false" %>

就可以用el 了,我自己試過沒問題


isELIgnored 預設值本來就是false吧


reply to postreply to post
懂得珍惜
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
rfus





發文: 315
積分: 2
於 2004-05-27 13:47 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
目前拜讀到第七章
第六章遇到el不能run書中也沒提到如何設定 …
同第六章Param.jsp也不能run因為沒有裝jstl
jstl在第七章....順序不對吧
不要預期每個人都會裝範例.....
一點小建議Cool


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:rfus]
browser

戀香

版主

發文: 3570
積分: 1
於 2004-05-27 15:36 user profilesend a private message to usersend email to browserreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
rfus wrote:
目前拜讀到第七章
第六章遇到el不能run書中也沒提到如何設定 …
同第六章Param.jsp也不能run因為沒有裝jstl
jstl在第七章....順序不對吧
不要預期每個人都會裝範例.....
一點小建議Cool


十分感謝 rfus 兄的提醒 ... Smile
這部分真的是我的疏忽 ...
在第六章的程式碼中 使用了 JSTL ...

PS. 對不起各位讀者 Embaressed


browser edited on 2004-05-27 15:44
reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:lsw0529]
pork





發文: 2
積分: 0
於 2004-08-09 10:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
lsw0529 wrote:
isELIgnored 預設值本來就是false吧

查了規格書(JavaServer Pages™ Specification Version2.0 3.3.2)一下,如下表:

Table JSP.3-1 EL Evaluation Settings for JSP Pages
=================================================
JSP Configuration<el-ignored> Page Directive isELIgnored EL Encountered
=================================================
unspecified------------------------ unspecified -----------------Ignored if <= 2.3 web.xml Evaluated otherwise.
---------------------------------------------------------------------------------------------------------
false-------------------------------- unspecified ------------------ Evaluated
---------------------------------------------------------------------------------------------------------
true -------------------------------- unspecified ----------------- Ignored
----------------------------------------------------------------------------------------------------------
don’t care ------------------------ false ------------------------- Evaluated
----------------------------------------------------------------------------------------------------------
don’t care ------------------------ true ------------------------ Ignored
=================================================
由上表看出
isELIgnored 應該沒有所謂的預設值
設定為false可確保el執行!!
ps:很難排版 Sad


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
fire





發文: 15
積分: 0
於 2004-09-21 22:13 user profilesend a private message to usersend email to firereply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
難怪...難怪小弟試了一整天試不出
原來章節排錯了>"<
(不過技術手冊2還是本好書~good)

另外也超感謝超感謝樓上的前輩
你讓小弟試到第三天時,終於有成功了

<%@ page isELIgnored ="false" %>

就是這一排話>"<
只是往後每個程式都要這樣宣告嘛..."


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
yisan





發文: 5
積分: 0
於 2004-09-29 16:27 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
原來是這樣啊!
小弟我試了好幾次都不行呢…
我一直以為我那一個步驟錯了呢…
謝謝前輩提供!!


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
老陳





發文: 161
積分: 2
於 2004-10-19 10:12 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
jiaming wrote:
原本 JSP 中沒有使用 EL,後來改成利用 EL 的方式。
發現 Tomcat 並不會跑修改後的結果。
原因在於在 JSP 頁中直接寫 EL 是 JSP2.0/servlet 2.4以後的版本,所以 web.xml 中必須宣告為
1
2
3
4
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">



web.xml除了改這個之外,應該還有另一個地方,就是在設定taglib原本獨立的,根據新的xml schema的規定,外面必須多包一層jsp-config,範例如下:
1
2
3
4
5
6
7
8
9
10
<jsp-config>
        <taglib>
      <taglib-uri>
         http://jakarta.apache.org/tomcat/debug-taglib
      </taglib-uri>
      <taglib-location>
         /WEB-INF/jsp/debug-taglib.tld
      </taglib-location>
  </taglib>
</jsp-config>


我個人是改了這兩個地方才可以正常使用EL的語法的 Big Smile


reply to postreply to post
電腦是害人的工具,但是上帝卻可以藉著它行奇妙的大能
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:lsw0529]
jamerce





發文: 13
積分: 0
於 2004-10-23 22:22 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
真的耶
在jsp網頁中 加上 <%@ page isELIgnored ="false" %> 此行
就可以正常在jsp中跑EL了~
真是非常謝謝~解答


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
therocky2





發文: 3
積分: 0
於 2004-11-02 10:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
怎么加上 <%@ page isELIgnored ="false" %>写EL可以,但与C标签一起写就错,象這<c:out value="${empty jstl}"/>(jstl为空物件),会错!
好象2者不可兼并一样的!


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:therocky2]
heaven0





發文: 5
積分: 0
於 2004-12-05 19:56 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
therocky2 wrote:
怎么加上 <%@ page isELIgnored ="false" %>写EL可以,但与C标签一起写就错,象這<c:out value="${empty jstl}"/>(jstl为空物件),会错!
好象2者不可兼并一样的!


在我的机器里把那个属性值改成"true"就好了,偶也不知道怎么回事,真是迷糊死偶了 Sad
另外,请教一下:
如何让weblogic8.1sp3支援jsp2.0和EL啊????


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
Madagascar





發文: 122
積分: 2
於 2004-12-27 11:35 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
還有另一種方法提供給各位....

在web.xml中(2.4版)中
<jsp-config>
<jsp-property-group>
<el-ignored>
true / false
</el-ignored>
</jsp-property-group>
</jsp-config>

這邊為web-xml的設定...true代表所有的jsp都可以用EL

但是有一點要注意...JSP的page宣告效力大於DD的設定...(JSP宣告可以override DD設定)
也就是如果JSP中宣告EL是不可以使用的...
則該頁的JSP就無法使用EL...

所以這是該注意的地方...


reply to postreply to post
已完成:SCJP 1.4、SCWCD 1.3
今年目標:SCWCD 1.4、SCBCD 1.3
加油!!!
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
bigkit





發文: 44
積分: 0
於 2005-03-24 13:12 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
跟了上面的方法為何還是不能使c:out 和 el 一起使用呢?...

(使用tomcat-5.0.28 )
ex:
<c:out value="${param.name}" />

其錯誤如下:
org.apache.jasper.JasperException: /simpleBean.jsp(16,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
  org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
  org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
  org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150)
  org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:941)
  org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:696)
  org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
  org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
  org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
  org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
  org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
  org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
  org.apache.jasper.compiler.Validator.validate(Validator.java:1475)
  org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:214)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
  org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
  org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
bigkit





發文: 44
積分: 0
於 2005-03-24 15:18 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
研究一下...發覺原來是版本的問題...其版本主要的差別
在STL 1.0 core library---------------------------------------------------------

使用在c-rt.tld不需要設定....
支援在page中直接使用
ex:name=xxx;
1111name=${param.name}
其結果
1111name=xxx
---------------------------------------------------------------------------------
使用c.tld是則需要設定.....
缺點:
不支援在page中直接使用
ex:name=xxx;
1111name=${param.name}
其結果
1111name=${param.name}
---------------------------------------------------------------------------------
在STL 1.1 core library-需設定------------------------------------------

支援在page中直接使用
ex:name=xxx;
1111name=${param.name}
其結果
1111name=xxx


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
neowfm





發文: 38
積分: 0
於 2005-05-15 16:35 user profilesend a private message to usersend email to neowfmreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
dear bigkit :
您提到的"用在c-rt.tld不需要設定"與"在STL 1.1 core library-需設定"是代表要設定哪些地方,我不是很清楚,可以說明白一點嗎?
因為我也遇到c:out 和 el 不能一起使用的狀況
會出現下面的錯誤訊息。

1
org.apache.jasper.JasperException: /simpleBean.jsp(16,0) According to TLD or attribute directive in tag file, attribute value does not accept any expressions

best regards


browser edited on 2005-05-15 17:35
reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
ant21





發文: 21
積分: 0
於 2005-06-14 20:45 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
I do it like this in JSP 2.0 & JSTL 1.1:

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt" %>

<c_rt:out value="${myfn:utf2iso(messcode)}"/>


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:ant21]
rockingnotroll





發文: 3
積分: 0
於 2005-11-16 10:14 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Hi,
小弟用了以上大家的解決方法

一台電腦加了
<%@ page isELIgnored ="false" %>
就可以用EL 和JSTL

另一台電腦可以用EL 但不能用JSTL
請問有人遇到這麼情況嗎?
錯誤訊息如下:
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
  org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50)
  org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
  org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:114)
  org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:316)
  org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:147)
  org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
  org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)
  org.apache.jasper.compiler.Parser.parseElements(Parser.java:1543)
  org.apache.jasper.compiler.Parser.parse(Parser.java:126)
  org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
  org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
  org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:146)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
  org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
  org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
  org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
  org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
  org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
gxjljx





發文: 1
積分: 0
於 2006-04-10 10:49 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
看了这篇文章,我受益匪浅啊

reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
URP





發文: 3
積分: 0
於 2006-04-20 11:55 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
jstl.jar要1.1版本的,在tomcat 5上运行就不会出问题了

reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
SoloT





發文: 4
積分: 0
於 2006-07-29 13:38 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
楼上有几位大大说得没错,直接使用EL和在<c:out value="xxx" />好像是不能一起用的

我在jstl1.1+tomcat5.0.28+eclipse中开头写<%@ page isELIgnored="true" %>,那么直接使用EL是没问题的,但<c:out value="xxx" />中使用就会出现错误,
如果开头写<%@ page isELIgnored="false" %>,那么直接使用EL会输出${xxx}
It's really a big problem


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
SeanSu





發文: 13
積分: 0
於 2007-09-18 22:04 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
感謝ouching大大解決了我的問題,我是使用Tomcat 5.5.23 + eclipse,另外再抓struts 1.2.9裏的struts-blank.war來建立自己的application,將該放的jar檔和tld檔都放好後,還是一直試不成功,後來也是加上<%@ page isELIgnored ="false" %>才跑成功的。

reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
troyz





發文: 46
積分: 0
於 2007-11-30 17:06 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
http://blog.csdn.net/f9inux/archive/2006/11/05/1368428.aspx
解决方案如上文


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
jyang599





發文: 1
積分: 0
於 2009-03-23 17:06 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
感謝分享~
今天卡了兩三個小時~~
終於知道 錯在哪了~~太感謝樓主了~


reply to postreply to post
作者 Re:解決 JSP 不能 Run EL 的問題 [Re:jiaming]
brandon_chou





發文: 3
積分: 0
於 2014-04-16 18:36 user profilesend a private message to usersend email to brandon_choureply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我的環境
Servlet Version : 2. 4
JSP Version : 2.0
Server Version : Apache Tomcat/5.0.28

加上 <%@ page isELIgnored ="false" %> 即可使用 EL

如果原頁面有 <%@ taglib uri="/tags/jstl-c" prefix="c" %> 則會出錯,將他拿掉即可正常執行


reply to postreply to post
周澤伯
» JWorld@TW »  Servlet/JSP 討論區 » JSTL/EL

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8