1

我刚刚将一些中型 Web 应用程序从 JSF 1.2/MyFaces 迁移到 JSF 2.0/Mojarra。除了我已经实现的一些自定义组件之外,一切似乎都可以工作,除了来自 Tomahawk 的 JSCookMenu (是的,我有来自 Apache 的库 Tomahawk,并且仍然想使用 Mojarra - 但我知道不应该有任何大问题)。我已经将 myfaces-api.jar 和 myfaces-impl.jar 替换为相应的 jsf-api.jar 和 jsf-impl.jar,并从 web.xml 中取出尽可能多的 MyFaces 参数和过滤器(有些需要留下,因为我仍然使用战斧)。我还为 JSF2 升级了 Tomahawk 到 1.1.11。

应用程序的 JSCookMenu 渲染得很好,但在单击菜单项时不会触发任何操作。我有一些 t:navigationMenuItem 的 action 属性绑定到 faces-config.xml 中的结果,它应该加载一个新的视图 id,还有一些 t:navigationMenuItem 的 actionListener 属性绑定到一个 bean 方法(注销菜单项,例如例子)。它们都不起作用,甚至没有调用我的 bean 中的 actionListener 代码。

我什至不确定如何调查这个问题,有没有人知道如何解决这个问题?我希望 web.xml 中的某些内容能有所帮助。

导航案例在 faces-config.xml 中正确编写,它们曾经在 JSF 1.2/MyFaces 以及在迁移到 Mojarra 之前的 JSF 2/MyFaces 上工作。

这是我的 web.xml 文件的相关部分:

<servlet>
    <servlet-name>faces</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>faces</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>com.sun.faces.allowTextChildren</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
    <param-value>com.avalanche.jsf.MyResourceResolver</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>
<context-param>
    <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>facelets.DEVELOPMENT</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE</param-name>
    <param-value>false</param-value>
</context-param>

<filter>
    <filter-name>facesExtensionsFilter</filter-name>
    <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
    <init-param>
        <param-name>uploadMaxFileSize</param-name>
        <param-value>1g</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>facesExtensionsFilter</filter-name>
    <servlet-name>faces</servlet-name>
</filter-mapping>
<filter-mapping>
    <filter-name>facesExtensionsFilter</filter-name>
    <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
</filter-mapping>
4

0 回答 0