我非常感谢社区为我的学习和制作经验提供的帮助,我带着另一个问题来找你,谢谢你。
好的,我有一个Flex + Spring + Hibernate + Tomcat + Mysql应用程序已经开发了3年。所以现在我需要添加一些HTML视图。所以我打算做的是将spring框架的jstl / jsp部分插入到项目中。
应用程序的所有逻辑都是通过一个名为CatalogFacadeImpl的控制器从视图(flex)调用的。所以我打算做的是创建一组调用CatalogFacadeImpl方法的控制器,并将结果抛给新的jstl视图。
问题是我在将mvc Controller Class,ModelAndView数据连接到jsp / jstl文件时遇到问题。
现在,在我正在进行的测试中,我让控制器像这样调用CatalogFacadeImpl:
public class Welcome implements Controller {
private String successView;
public static final String MAP_KEY = "categorias";
private CatalogFacadeImpl catalogFacadeImpl ;
public ModelAndView handleRequest(
HttpServletRequest request,
HttpServletResponse response) throws Exception
{
List lista = catalogFacadeImpl.getUserList();
return new ModelAndView(getSuccessView(),MAP_KEY,lista);
}
public String getSuccessView() {
return successView;
}
public void setSuccessView(String successView) {
this.successView = successView;
}
public void setCatalogFacadeImpl(CatalogFacadeImpl catalog){
this.catalogFacadeImpl = catalog;
}
}
当我调试它时,lista会带来正确的数据对象!所以它有效!
没有jstl的视图也可以正常工作,但是当我添加应该为我带来ModelAndView成功信息的代码时我得到错误:(这里是代码(注意,html代码因为编辑器而没有显示正确,但它和添加了jstl代码的html):
taglib prefix="c" uri="http://java.sun.com/jstl/core"
<html>
<head><title>Example :: Spring Application</title></head>
<body>
<h1>Example - Spring Application</h1>
<p>Lista de usuarios</p>
<c:forEach items="${lista}" var="lista">
<tr>
<c:out value="${lista.userName}" />
<div></div>
</td>
</tr>
</c:forEach>
</body>
</html>
我得到错误:
<html><head><title>Apache Tomcat/5.5.26 - Informe de Error</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>Estado HTTP 500 - </h1><hr noshade="noshade" size="1"><p><b>type</b> Informe de Excepción</p><p><b>mensaje</b> <u></u></p><p><b>descripción</b> <u>El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.</u></p><p><b>excepción</b> </p><pre>javax.servlet.ServletException: javax/el/ValueExpression
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:273)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:142)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1142)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:879)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
</pre><p></p><p><b>causa raíz</b> </p><pre>java.lang.NoClassDefFoundError: javax/el/ValueExpression
java.lang.Class.getDeclaredMethods0(Native Method)
java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
java.lang.Class.getDeclaredMethods(Class.java:1791)
java.beans.Introspector$1.run(Introspector.java:1272)
java.security.AccessController.doPrivileged(Native Method)
java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1270)
java.beans.Introspector.getTargetMethodInfo(Introspector.java:1136)
java.beans.Introspector.getBeanInfo(Introspector.java:387)
java.beans.Introspector.getBeanInfo(Introspector.java:159)
java.beans.Introspector.getBeanInfo(Introspector.java:220)
java.beans.Introspector.<init>(Introspector.java:368)
java.beans.Introspector.getBeanInfo(Introspector.java:159)
java.beans.Introspector.getBeanInfo(Introspector.java:220)
java.beans.Introspector.<init>(Introspector.java:368)
java.beans.Introspector.getBeanInfo(Introspector.java:159)
org.apache.jasper.compiler.Generator$TagHandlerInfo.<init>(Generator.java:3729)
org.apache.jasper.compiler.Generator$GenerateVisitor.getTagHandlerInfo(Generator.java:2132)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1600)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2222)
org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Generator.generate(Generator.java:3321)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:142)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1142)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:879)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
</pre><p></p><p><b>causa raíz</b> </p><pre>java.lang.ClassNotFoundException: javax.el.ValueExpression
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
java.lang.Class.getDeclaredMethods0(Native Method)
java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
java.lang.Class.getDeclaredMethods(Class.java:1791)
java.beans.Introspector$1.run(Introspector.java:1272)
java.security.AccessController.doPrivileged(Native Method)
java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1270)
java.beans.Introspector.getTargetMethodInfo(Introspector.java:1136)
java.beans.Introspector.getBeanInfo(Introspector.java:387)
java.beans.Introspector.getBeanInfo(Introspector.java:159)
java.beans.Introspector.getBeanInfo(Introspector.java:220)
java.beans.Introspector.<init>(Introspector.java:368)
java.beans.Introspector.getBeanInfo(Introspector.java:159)
java.beans.Introspector.getBeanInfo(Introspector.java:220)
java.beans.Introspector.<init>(Introspector.java:368)
java.beans.Introspector.getBeanInfo(Introspector.java:159)
org.apache.jasper.compiler.Generator$TagHandlerInfo.<init>(Generator.java:3729)
org.apache.jasper.compiler.Generator$GenerateVisitor.getTagHandlerInfo(Generator.java:2132)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1600)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1442)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2222)
org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
org.apache.jasper.compiler.Generator.generate(Generator.java:3321)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:142)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1142)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:879)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
</pre><p></p><p><b>nota</b> <u>La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/5.5.26.</u></p><hr noshade="noshade" size="1"><h3>Apache Tomcat/5.5.26</h3></body></html>
答案 0 :(得分:2)
闻起来像是一个类加载器问题。
javax.el.ValueExpression
仅出现在JSP 2.1中,而Tomcat 5.5仅支持JSP 2.0(请参阅version matrix)。
有些东西显然要求javax.el.ValueExpression
,我怀疑你已经在你的WAR中打包了JSTL,JSP和/或Servlet库的副本 - 这些库可能用于更新版本的JSP ,他们会与Tomcat自己的图书馆发生冲突。看看是否是这种情况,如果是这样,请从WAR中删除库。
此外,您的JSTL声明已过期。它应该是
http://java.sun.com/jsp/jstl/core
不
http://java.sun.com/jstl/core
(这是旧的JSP 2.0之前的URI)。
答案 1 :(得分:0)
Based on this forum,我想你可能正在将一个有冲突的servlet-api.jar捆绑到你的代码中。