2017-12-21 13 views
1

Ich bekomme den "Fehler 500: javax.el.ELException: Die Klasse [java.lang. Nummer] muss öffentlich sein, nicht abstrakt und keine Schnittstelle "auf meiner JSP-Seite.javax.el.ELException: Die Klasse [java.lang.Number] muss öffentlich, nicht abstrakt und keine Schnittstelle sein.

Hier sind die Protokolle.

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) 

Hier ist meine docDetail.jsp Seite Code:

<%-- --------------- 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; 
 
\t function disableButtons() { 
 
\t 
 
\t \t if (top['barFs']) { 
 
\t \t g_count = '<c:out value="${Number}"/>'; 
 
\t \t g_position = '<c:out value="${Position}"/>'; 
 
\t \t if (!(top['barFs'].disableButtons)) { 
 
      window.setTimeout("delay100()", 100); 
 
      } else { 
 
      top['barFs'].disableButtons(g_count, g_position); 
 
      } 
 
\t \t } 
 
\t \t 
 
\t } 
 
\t function delay100() { 
 
     if (!(top['barFs'].disableButtons)) { 
 
      window.setTimeout("delay100()", 100); 
 
     } else { 
 
      top['barFs'].disableButtons(g_count, g_position); 
 
     } 
 
\t 
 
     } 
 
     
 
    </script> 
 
</head> 
 

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

Antwort

3

Fix Ihre Variablennamen der Java naming conventions und dieses Problem verschwinden soll nachzukommen.

ist der Schuldige hier:

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

Und Funktion in EL 3.0 Der neue "Import Konstanten":

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

In Java beginnen Variablennamen mit Kleinbuchstaben und Klassennamen mit Großbuchstaben beginnen . Seit EL 3.0 wird alles aus dem Paket java.lang.* implizit in den EL-Bereich importiert, also auch java.lang.Number. Mit anderen Worten, wenn Sie in EL auf ${Number} verweisen, was der Klasse java.lang.Number entspricht, dann versucht es, es zu laden, was es nicht tun konnte, weil es abstract ist.

Aber das ist schließlich nicht Ihre Absicht. Sie wollten eindeutig eine benutzerdefinierte Variable referenzieren, die Sie einfach Number anstelle von number falsch angegeben haben.

Warum in Apache EL versucht, ${Number} so zu lösen, während es überhaupt keine Konstanten hat, ist ein anderes Problem. Sie würden am besten .

+0

Es löst das Problem nicht. Immer noch der gleiche Fehler. Die Anwendung wurde von WAS7 in WAS9 migriert und das Problem wurde angezeigt. Es funktioniert gut auf WAS7 mit dem gleichen Code. –

+0

Dann haben Sie vergessen, den Code nach dem Bearbeiten des Variablennamens zu speichern, neu zu erstellen oder erneut bereitzustellen. Natürlich funktioniert es auf WAS7, weil das alte Biest nur EL 2.1 benutzt. – BalusC

+0

getan wie vorgeschlagen, aber das gleiche Ergebnis. –

Verwandte Themen