【问题标题】:Error using t:dataScroller with MyFaces 2.1.5 Tomahawk 1.1.11 Spring 3.0.5将 t:dataScroller 与 MyFaces 2.1.5 Tomahawk 1.1.11 Spring 3.0.5 一起使用时出错
【发布时间】:2012-01-17 14:31:22
【问题描述】:

我正在从 mojarra 1.2 升级到 myfaces 2。使用 t:dataScroller 标签会产生以下错误:

java.io.FileNotFoundException: /WEB-INF/javax.faces.resource/oamSubmit.xhtml 在 ExternalContext 中找不到作为资源

代码sn-p:

<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 sn-p如下:

.. src="/app/javax.faces.resource/oamSubmit.js?ln=org.apache.myfaces"> .. 

我猜测 oamSubmit 的某处被作为 facelet 标记而不是 javascript 返回。我认为这可能是一个配置参数,但尚未找到正确的值。

Web.xml sn-ps:

<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>

faces-config.xml

<application>
    <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>      
</application>

更新: 更多堆栈跟踪详细信息:

WEB-INF/javax.faces.resource/oamSubmit.xhtml 在 ExternalContext 中找不到作为资源 在 org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory.resolveURL(DefaultFaceletFactory.java:227) 在 org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:170) 在 org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage._getFacelet(FaceletViewDeclarationLanguage.java:2530) 在 org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:435) 在 org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:77) 在 org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241) 在 org.springframework.faces.mvc.JsfView.renderMergedOutputModel(JsfView.java:85) 在 org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 在 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)

和 web.xml 中的调度程序 servlet 参数

<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>

我想我需要告诉 Dispatcher 按原样提供静态内容,而不是 JSF。

【问题讨论】:

  • 这是真正的错误信息和生成的代码吗?我在错误消息、发布的代码和 URL 模式中看到了矛盾。请验证并删除红鲱鱼。

标签: spring jsf myfaces tomahawk


【解决方案1】:

我在 web.xml 中将上下文参数设置为 true。

RENDERED_JSF_JS
RENDERED_MYFACES_JS
RENDER_FORM_SUBMIT_SCRIPT_INLINE

这似乎起到了作用。当然我还有其他问题,但我认为它们是无关的。

【讨论】:

    【解决方案2】:

    我可以确认,在我的案例中,使用 RENDER_FORM_SUBMIT_SCRIPT_INLINE 是解决包含在外部文件中的缺少 javascript 函数 'oamSubmitForm' 的方法。以下链接可能有助于找到真正的问题:http://jacekbilski.blogspot.de/2009/07/including-javascript-in-html-content.html

      <context-param>
        <param-name>org.apache.myfaces.RENDER_FORM_SUBMIT_SCRIPT_INLINE</param-name>
        <param-value>true</param-value>
      </context-param>
    

    【讨论】:

      猜你喜欢
      • 2011-02-27
      • 2012-07-31
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 2013-12-06
      • 2012-12-23
      相关资源
      最近更新 更多