javax.el.ELException:类[java.lang.Number]必须是公共的,非抽象的并且不是接口

基兰·莫尔(Kiran More)

我在jsp页面上收到“错误500:javax.el.E​​LException:类[java.lang.Number]必须是公共的,非抽象的并且不是接口”。

这是日志。

000001f8 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: An exception was thrown by one of the service methods of the servlet [/WEB-INF/pages/tpl/docDetail.jsp] in application [gsa]. Exception created : [javax.el.ELException: The class [java.lang.Number] must be public, non-abstract and not an interface
        at javax.el.ImportHandler.findClass(ImportHandler.java:231)
        at javax.el.ImportHandler.resolveClass(ImportHandler.java:185)
        at javax.servlet.jsp.el.ScopedAttributeELResolver.getValue(ScopedAttributeELResolver.java:140)
        at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)
        at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:80)
        at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
        at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:815)
        at com.ibm._jsp._docDetail._jspx_meth_c_out_1(_docDetail.java:311)
        at com.ibm._jsp._docDetail._jspService(_docDetail.java:130)
        at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:99)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
        at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
        at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:220)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1124)
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1390)
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:196)
        at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
        at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
        at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
        at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)

这是我的docDetail.jsp页面代码:

<%-- --------------- LANGUAGE --------------- --%>
<%@ page contentType="text/html; charset=UTF-8" %>
<%-- --------------- TAGLIBS --------------- --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%-- --------------- IMPORTS --------------- --%>

<%@page import="java.util.List,java.util.Iterator,
                com.vw.gsasearch.domain.tpl.model.TplProcess" %> 
                
            

<c:set var="cssURL">
  <bean:message key="css.elsa.vw"  />
</c:set>
<c:set var="cssURL">
  <html:rewrite page="${cssURL}" />
</c:set>

<html>
<head>
  <LINK href='<c:out value="${cssURL}" />' rel="stylesheet" type="text/css" />
  <style>
  td{
        color: #000000; 
        font-size: 10pt; 
        font-family: Arial, Helvetica, sans-serif; 
        text-decoration: none;  
   }
  </style>  
  
   <script language="JavaScript" type="text/javascript">
      var g_count;
      var g_position;
	  function disableButtons() {
	 
	  	if (top['barFs']) {
	  	  g_count = '<c:out value="${Number}"/>';
	  	  g_position = '<c:out value="${Position}"/>';
	  	  if (!(top['barFs'].disableButtons)) {
            window.setTimeout("delay100()", 100);
          } else {
            top['barFs'].disableButtons(g_count, g_position);
          }
	  	}
		
	  }
	  function delay100() {
        if (!(top['barFs'].disableButtons)) {
          window.setTimeout("delay100()", 100);
        } else {
          top['barFs'].disableButtons(g_count, g_position);
        }
	
      }
      
  </script>
</head>

<body class="elsaBackground_light" onload="disableButtons();">
<form>
	<table cellpadding="5" cellspacing="5">
		<tr>
   <%-- <td><bean:message key="process.pid" bundle="TPL" />:</td>
    <td><select class="readonlyInput" readonly="readonly" name="kdnr" size="1">
    <option>&nbsp;</option></td> --%>
		  <td><bean:message key="process.revised"  />: </td>
		  <td><c:out value="${procedure.changeDate}" /></td>
		</tr>
	</table>
	</body>
	
	<%-- remove session atrribute --%>	
	<%--<c:remove var="procedure" scope="session" /> --%>	
</html>

BalusC

修改变量名以符合Java命名约定,此问题将消失。

罪魁祸首在这里:

<c:out value="${Number}"/>

在EL 3.0的新“导入常量”功能中:

at javax.el.ImportHandler.findClass(ImportHandler.java:231) 
at javax.el.ImportHandler.resolveClass(ImportHandler.java:185)

在Java中,变量名以小写字母开头,类名以大写字母开头。从EL 3.0开始,java.lang.*包中的所有内容都隐式导入到EL范围中,因此java.lang.Number换句话说,当您${Number}在与java.lang.Number类别相匹配的EL中进行引用时,它会尝试加载它无法执行的操作,因为它是abstract

但这毕竟不是您的意图。您显然打算引用一个刚被误认为的自定义变量,Number而不是number

至于为什么地球${Number}上没有任何常量的Apache EL试图像这样进行解析是一个不同的问题。您最好将问题报告给Tomcat的人员

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

javax.el.ELException:java.lang.NullPointerException

javax.el.ELException:无法将类型为类java.lang.String的abcCache转换为类java.lang.Class

javax.el.ELException:无法将类型[class java.lang.String]的[2020-01-28T12:53:00.000 + 0000]转换为[class java.util.Date]

java.lang.ClassNotFoundException:javax.el.ELContext

org.apache.jasper.JasperException:javax.el.PropertyNotFoundException:类'java.lang.String'没有属性'user'

java.lang.ClassFormatError:类文件javax / mail / MessagingException中不是本机或抽象的方法中的缺少Code属性

javax.el.ELException:读取Person类型的[name]时出错

Spring 3 + Tomcat 6:表单验证异常-java.lang.NoSuchMethodError:javax.el.ExpressionFactory.newInstance()Ljavax / el / ExpressionFactory;

JSP EL无法正常工作-javax.el.PropertyNotFoundException:在类型java.lang.String上找不到属性“名称”

java.lang.NoClassDefFoundError:使用javax /的/ ELManager

java.lang.NoClassDefFoundError:javax / validation / ParameterNameProvider

java.lang.NoClassDefFoundError:javax / servlet / ServletContext

java.lang.NoClassDefFoundError:javax / json / Json

java.lang.NoClassDefFoundError:javax / activation / DataContentHandler

java.lang.NoClassDefFoundError:javax / persistence / EntityListeners

<p:selectManyMenu var>引发ELException:类'java.lang.String'没有属性'foo'

当我向控制器发送无效值时,java.lang.NoClassDefFoundError:javax / el / PropertyNotFoundException

javax.el.PropertyNotFoundException:itemLabel =“#{projet.nomProjet}”:在类型java.lang.String上找不到属性'nomProjet'

Spring Boot-java.lang.ClassNotFoundException:javax.servlet.ServletContext并且无法启动EmbeddedWebApplicationContext

javax.el.PropertyNotFoundException:在类[Others.Customer]上找不到名为[ShoppingBag]的公共静态字段

javax.el.PropertyNotFoundException:在类 [servlets.Controller] 上找不到名为 [resultRow] 的公共静态字段

异常:java.lang.ClassNotFoundException:即使javax.mail.jar在类路径下,javax.activation.DataHandler吗?

Java Spring MVC-java.lang.NoClassDefFoundError:javax / servlet / ServletContext

java.lang.NoClassDefFoundError:无法初始化类javax.media.jai.JAI

找不到类:javax.servlet.ServletException:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

javax.el.ELException:错误解析:“#{a4jSkin.imageUrl('buttonBackgroundImage.png')}”

websphere 7(和Spring Roo)与javax.el.ELException不兼容

java.lang.ClassNotFoundException:javax.mail.MessagingException

月蚀:java.lang.NoClassDefFoundError:使用javax /激活/ DataHandler的