2012-01-04 3 views
3

J'ai une page JSP. Avec le temps, c'est devenu très long.La page JSP devient trop longue pour être compilée

Récemment, je compilait la page jsp et je suis une exception du compilateur qui

org.apache.jasper.JasperException: Unable to compile class for JSP: 

    An error occurred at line: 320 in the generated java file 
    The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit 

Stacktrace: 
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) 
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331) 
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) 

Que dois-je faire pour éviter cette exception.?

Répondre

6

Lors de la compilation JSP, le corps entier d'un fichier JSP sera placé dans un seul bloc try. La limite qu'un bloc Java peut contenir est de 64 Ko. La taille du code Java généré de votre fichier JSP a apparemment dépassé cela.

Vous avez peut-être énormément de HTML ou de conditions dans le fichier JSP. Vous devez diviser le fichier JSP en plus petites parties que vous incluez par <jsp:include>. Par exemple, un fichier JSP inclut un fichier par en-tête, pied de page, menu, corps et/ou des pièces conditionnellement affichées, etc. Il a l'avantage supplémentaire d'être mieux réutilisable.

Ou, peut-être vous avez suivi la pratique découragée oldschool mauvaise d'écrire du code Java brut dans le fichier JSP en utilisant scriptlets (ces <% %> choses), tandis que le code Java appartient réellement dans les classes normales de Java. Get rid de tout ce code Java dans JSP et le déplacer dans une classe servlet alors complet. Là, vous avez toute la liberté d'écrire des classes/méthodes joliment réutilisables au lieu de placer tout le contenu dans un grand bloc "Dieu" inaccessible.

+3

Ah la vieille limitation try-block, une erreur que tout le monde va tôt ou tard rencontrer et apprendre le bon codage JSP à la dure :) – pap

0

Résolution du problème.

dans standlone.xml, sous le sous-système web -> configuration add keep-generated = false.

Cela a fonctionné pour moi.