2013-07-12 4 views
0

Я работаю над приложением Spring MVC, которое я планировал развернуть на Heroku. Пока я развертывал приложение с git push, и приложение зависело от Jetty, все работало нормально. Затем я решил удалить Jetty из приложения, разделить приложение на несколько модулей, использовать Maven, чтобы связать его с WAR и развернуть эту WAR для Heroku (эффективно развертывать мое приложение для Tomcat 7). Обслуживание часть приложения продолжает работать должным образом, но JSPs начали бросать странные исключения:JSP на Heroku - «Невозможно скомпилировать класс для JSP»

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

An error occurred at line: 12 in the jsp file: /WEB-INF/jsp/createOrder.jsp 
The method proprietaryEvaluate(String, Class<Boolean>, PageContext, null, boolean) is undefined for the type PageContextImpl 
9: </head> 
10: <body> 
11: <c:choose> 
12: <c:when test="${success}"> 
13:  Order successfully created 
14: </c:when> 
15: <c:otherwise> 

StackTrace:

org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) 
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331) 
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468) 
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) 
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) 
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) 
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262) 
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

Это выглядит так, будто EL не работает.

Неужели кто-нибудь еще сталкивался с подобными проблемами, и кто-нибудь знает, как его решить?

ответ

2

Ну, чтобы ответить на мой вопрос ... Я решил две вещи, чтобы решить эту проблему:
1) Я удалил оставшиеся зависимости Jetty из файла Maven pom.xml; Jetty использовался только для локального тестирования в любом случае, так что это не вызывало никаких проблем
2) Я добавил ссылку на org.springframework.ui.Model как параметр ко всем методам контроллера Spring MVC, которые перенаправлялись на страницу JSP, наряду с существующими Map<String, Object> параметр; методы обслуживания - те, которые возвращают XML или JSON, остались нетронутыми. Я также скопировал все члены параметра Map<String, Object> в параметр Model.

Я предполагаю, что удаление зависимостей Jetty от pom.xml сделало трюк, но я также внедрил второе исправление для хорошей меры.

Смежные вопросы