Я нахожусь в процессе обновления с mojarra 1.2 до myfaces 2. Использование тега t: dataScroller приводит к следующей ошибке:
java.io.FileNotFoundException: /WEB-INF/javax.faces.resource/oamSubmit.xhtml Не найден в ExternalContext как ресурс
Фрагмент кода:
<t:dataScroller id="${name}" for="#{forTable}"
fastStep="10"
pageIndexVar="pageIndex"
paginator="true"
paginatorMaxPages="10"
pageCountVar="pageCountVar"
rowsCountVar="rowsCountVar"
firstRowIndexVar="firstRowIndexVar"
lastRowIndexVar="lastRowIndexVar"
rowIndexVar="rowIndexVar"
paginatorRenderLinkForActive="false"
>
Сгенерированный фрагмент JavaScript для моей страницы выглядит следующим образом:
.. src="/app/javax.faces.resource/oamSubmit.js?ln=org.apache.myfaces"> ..
Я предполагаю, что где-то вдоль линии oamSubmit возвращается как тег facelet вместо javascript. Я думал, что это может быть параметром конфигурации, но пока не нашел правильное значение.
Фрагменты Web.xml:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
лица-config.xml
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
Обновлен:
Больше деталей трассировки стека:
WEB-INF/javax.faces.resource/oamSubmit.xhtml Not Found in ExternalContext as a Resource
at org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory.resolveURL(DefaultFaceletFactory.java:227)
at org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:170)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage._getFacelet(FaceletViewDeclarationLanguage.java:2530)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:435)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:77)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
at org.springframework.faces.mvc.JsfView.renderMergedOutputModel(JsfView.java:85)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
И параметры сервлет-диспетчера в web.xml
<servlet>
<servlet-name>myApp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myApp</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
Я думаю, мне нужно сказать Диспетчеру, чтобы он обслуживал статический контент как есть, а не JSF.