如何在GWT项目中使用JSTL?
我正在用GWT-2.0.3和eclipse插件构建一个GWT项目。 首先我尝试了JSTL1.2和servlet 2.5如何在GWT项目中使用JSTL?,gwt,jstl,Gwt,Jstl,我正在用GWT-2.0.3和eclipse插件构建一个GWT项目。 首先我尝试了JSTL1.2和servlet 2.5 我确实将jstl-1.2.jar添加到war/WEB-INF/lib 在web.xml中,我使用: <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.
- 我确实将jstl-1.2.jar添加到war/WEB-INF/lib
- 在web.xml中,我使用:
如果我将该项目部署到Tomcat6,它就可以正常工作。我在网上搜索,找到了一篇文章,所以我尝试了jstl-1.1和servlet2.4,但我仍然得到了这个例外。<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
我发现GWT的jetty服务器版本应该是6.1,但我不确定,如果这是真的,它应该支持EE5,那么有人集成了GWT和JSTL吗?请帮忙!谢谢。我建议只切换到外部Java服务器(比如Tomcat,您似乎已经安装了它,它可以与您的配置配合使用)——问题要少得多,比尝试使用GWT附带的受损Jetty更容易 有关说明,请参阅。如果你坚持使用GWT的Jetty,你将来只会遇到更多的问题
更新,见下面Pascal Thivent的评论: @帕斯卡:很抱歉,我不是想说“切换到外部服务器,不要说话”,只是我看到很多人在配置GWT附带的Jetty时遇到问题-在某些情况下,这是因为配置与标准有所不同,因为GWT团队包括一个旧的/修改过的(我无法获得任何关于此的可靠信息)Jetty版本,例如,请参见此处的内容和评论,一些引用: 注:我相信jetty的版本 随GWT一起装运的低于6.1.12和 因此,你必须去掉第一个 示例文档中的参数为 在码头6.1.12rc3中增加。参见 码头文件顶部的注释 页面
据说Jetty支持servlet 2.5通过web.xml条目或 @资源注释。但是,我有 目前尚不清楚这是否得到支持 由GWT附带的Jetty版本提供。 如果有人知道 不是这样的,如果是这样的话,情况如何 好了,请告诉我 当有人想要使用EJB时,会出现其他问题 所有这些(可能以更简洁/隐晦的方式)都写在GWT的文档中——为此,我在上面提供了一个链接,指向解决此问题的确切段落。
希望这能解决一些问题-切换到外部服务器似乎是最简单、最简单和最好的解决方案-没有“特殊GWT”配置,这意味着您可以使用将在生产中使用的相同配置/服务器,无需将配置迁移到Tomcat,迁移后无意外错误等
webapp的运行时类路径可能与不同版本的EL-JAR文件(旧版本或不同appserver的版本)混杂在一起它缺少所提到的方法中的异常。我怀疑
。去掉它,它通常已经由有问题的appserver提供,您不需要将它包含在您的webapp中。这适用于所有appserver库,例如/WEB-INF/lib
,顺便说一句,以及consorts。您不应该将它复制到WEB应用程序中bapp的servlet api.jar
。这就给移植带来了麻烦。我在为我的应用程序引擎项目寻找修复JSTL时偶然发现了这个问题。我在谷歌的“Will It Play”页面上找到了答案。显然你必须添加/WEB-INF/lib
添加到JSP页面以启用EL解析。我也遇到了这个错误 我发现可以通过在EclipseJavaBuildPath->Order and Export对话框中将GWTSDK移动到类路径的底部来修复它 但是,以下消息会中断GWT序列化:
您可以通过将GWT库移回类路径来解决这个问题,这使它看起来像是可以在Jetty中使用JSTL或GWT序列化,但不能同时使用两者Mar 3, 2011 3:31:23 PM sun.reflect.NativeMethodAccessorImpl invoke0 WARNING: Exception while dispatching incoming RPC call com.google.gwt.user.client.rpc.SerializationException: java.lang.reflect.InvocationTargetException at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:764) at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:727)
(GWT2.1、JSTL1.2和servlet 2.5。)非常感谢,如果我切换到tomcat,我想我不能使用托管模式。没有特定问题的链接,没有提及特定问题,没有参考资料,什么都没有。我在这个答案中看到的唯一一件事是FUD,你是对的,我编辑了我的答案以澄清这一点,希望它不是FUD,而是更符合通常(高)的标准,所以:)这个解决方案对我有效:HTTP ERROR: 500 javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; RequestURI=/system/view/register.html Caused by: java.lang.AbstractMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext; at javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:587) at javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally(LoopTagSupport.java:323) at org.apache.jsp.system.view_jsp._jspx_meth_c_forEach_0(view_jsp.java:267) at org.apache.jsp.system.view_jsp._jspx_meth_a_body_0(view_jsp.java:186) at org.apache.jsp.system.view_jsp._jspService(view_jsp.java:98) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:285) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) at org.app4j.test.DispatchServlet.doGet(DispatchServlet.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) Powered by Jetty://
java.lang.AbstractMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
Mar 3, 2011 3:31:23 PM sun.reflect.NativeMethodAccessorImpl invoke0 WARNING: Exception while dispatching incoming RPC call com.google.gwt.user.client.rpc.SerializationException: java.lang.reflect.InvocationTargetException at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:764) at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:727)