1

faces-config.xml ファイルに次の行を追加すると:

" <application><view-handler>com.sun.facelets.FaceletViewHandler</view-handler></application> "

日食 言います:

" view-handler references to "com.sun.facelets.FaceletViewHandler" that does not implement interface javax.faces.application.ViewHandler

configure problem severity for preference 'invalid view handler' "

ただし、jsf プロジェクトの「WEB-INF」の「lib」にライブラリを追加しました。ear プロジェクトと jsf プロジェクトをデプロイすると、それらは正しくデプロイされますが、jsf ページを実行するとエラーが発生します。

" javax.servlet.ServletException: /AddUser.xhtml @9,9 <h:head> Tag Library supports namespace: http://java.sun.com/jsf/html, but no tag
was defined for name: head
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606) "

コンソールには、次のものがあります。

14:05:49,420 GRAVE [facelets.compiler] Error Loading Library: vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/primefaces-3.5.jar/META-INF/primefaces-p.taglib.xml: java.io.IOException: Error parsing [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/primefaces-3.5.jar/META-INF/primefaces-p.taglib.xml]: 
...
Caused by: org.xml.sax.SAXException: Error Handling [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/primefaces-3.5.jar/META-INF/primefaces-p.taglib.xml@5,17]
...
14:05:49,450 GRAVE [facelets.compiler] Error Loading Library: vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/jstl-fn.taglib.xml: java.io.IOException: Error parsing [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/jstl-fn.taglib.xml]: 
...
Caused by: org.xml.sax.SAXException: Error Handling [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/jstl-fn.taglib.xml@47,31]
...
14:05:49,469 GRAVE [facelets.compiler] Error Loading Library: vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/jstl-core.taglib.xml: java.io.IOException: Error parsing [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/jstl-core.taglib.xml]: 
...
Caused by: org.xml.sax.SAXException: Error Handling [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/jstl-core.taglib.xml@47,31]
...
14:05:49,479 GRAVE [facelets.compiler] Error Loading Library: vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/ui.taglib.xml: java.io.IOException: Error parsing [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/ui.taglib.xml]: 
...
Caused by: org.xml.sax.SAXException: Error Handling [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/ui.taglib.xml@47,31]
...
14:05:49,479 GRAVE [facelets.compiler] Error Loading Library: vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/facelets_jsf_core.taglib.xml: java.io.IOException: Error parsing [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/facelets_jsf_core.taglib.xml]: 
...
Caused by: org.xml.sax.SAXException: Error Handling [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/facelets_jsf_core.taglib.xml@47,31]
...
14:05:49,479 GRAVE [facelets.compiler] Error Loading Library: vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/composite.taglib.xml: java.io.IOException: Error parsing [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/composite.taglib.xml]: 
...
Caused by: org.xml.sax.SAXException: Error Handling [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/composite.taglib.xml@47,29]
...
14:05:49,489 GRAVE [facelets.compiler] Error Loading Library: vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/html_basic.taglib.xml: java.io.IOException: Error parsing [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/html_basic.taglib.xml]: 
...
Caused by: org.xml.sax.SAXException: Error Handling [vfs:/C:/Users/citech/Desktop/testjsf/jsf/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.x_Runtime_Server1368781328313/deploy/helloworldjsf.war/WEB-INF/lib/jsf-impl-2.1.6.jar/com/sun/faces/metadata/taglib/html_basic.taglib.xml@47,31]
...
14:05:49,499 GRAVE [facelets.viewhandler] Error Rendering View[/AddUser.xhtml]: com.sun.facelets.tag.TagException: /AddUser.xhtml @9,9 <h:head> Tag Library supports namespace: http://java.sun.com/jsf/html, but no tag was defined for name: head
...
14:05:49,499 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/helloworldjsf].[Faces Servlet]] "Servlet.service()" pour la servlet Faces Servlet a généré une exception: com.sun.facelets.tag.TagException: /AddUser.xhtml @9,9 <h:head> Tag Library supports namespace: http://java.sun.com/jsf/html, but no tag was defined for name: head
...

しかし、faces_config.xml: の行を削除してプロジェクトを再デプロイすると、それらは適切にデプロイされ、jsf ページが開きます。フォームを検証してデータベースに記録すると、同じページが返され、コンソールに次のエラーが表示されます。

"  INFO  [STDOUT] UserBeanCtrl.addUser(): Erreur d'initialisation du contexte JNDI<javax.naming.NamingException: Could not dereference
object [Root exception is java.lang.RuntimeException: Can not find
interface declared by Proxy in our CL +
org.jboss.web.tomcat.service.WebCtxLoader$ENCLoader@526f437d]> "

何が起こっているのかわかりません。

顔-config.xml

    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
 <managed-bean>
  <managed-bean-name>userBeanVue</managed-bean-name>
  <managed-bean-class>net.viralpatel.jsf.helloworld.UserBeanVue</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>userBeanCtrl</managed-bean-name>
  <managed-bean-class>net.viralpatel.jsf.helloworld.UserBeanCtrl</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <navigation-rule>
  <display-name>AddUser</display-name>
  <from-view-id>/AddUser.xhtml</from-view-id>
  <navigation-case>
   <from-outcome>success</from-outcome>
   <to-view-id>/ListUser.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
 </application>
</faces-config>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>helloworldjsf</display-name>
  <context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>bluesky</param-value>
  </context-param>
  <context-param>
    <param-name>facelets.REFRESH_PERIOD</param-name>
    <param-value>2</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
  </context-param>
  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
  <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>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
</web-app>
4

1 に答える 1

4

JSF 1.x、Facelets 1.x、および JSF 2.x を混在させているようです。JSF 2.0 互換faces-config.xmlのルート宣言がありますが、マネージド Bean とナビゲーション ケースを従来の JSF 1.x の方法で宣言しています (これらのエントリは、@MangedBeanアノテーションと暗黙的なナビゲーション機能のおかげで、JSF 2.x では不要になりました) 。 . おそらく、JSF 2.x を学ぼうとしているときに間違った本/チュートリアル/リソースを読んでいたのでしょう。

また、ViewHandlerあなたが言及した実装は Facelets 1.x からのもので、レガシー JSF 1.x をまだ使用している場合にのみ必要です。ただし、JSF 2.x 以降、Facelets 2.x は JSF API/実装 JAR にバンドルされており、デフォルトのビュー テクノロジになっています。したがって、個別の Facelets JAR ファイルを用意する必要も、そのビュー ハンドラを手動で に登録する必要もありませんfaces-config.xml

また、タグ エラーは、<h:head>実行時に JSF 2.x ではなく JSF 1.x JAR を実際に使用していることを確認します<h:head>

すべての JSF 1.x および Facelets 1.x 関連の JAR を取り除き、JSF 2.x のものをダウンロードしてインストールしたことを確認します (または、JBoss 6x 自体が JSF 2 に既に同梱されているため、何もダウンロードしないでください。 x がバンドルされているため、JSF 2.x を実行するには、実質的に完全に空の状態/WEB-INF/libでも十分なはずです)。それらの JSF 1.x の本/チュートリアル/リソースを捨てて、JSF 2.x のものに向かいます。私たちの JSF wiki ページは良い出発点です。

XML 構成ファイルに関しては、最終的には、 faces-config.xmlの次のエントリのみ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>*.xhtml</url-pattern>
</servlet-mapping>

デフォルトの「aristo」が必要なものでない場合は、必要に応じて PrimeFaces テーマを追加して戻します。

于 2013-05-21T13:51:45.527 に答える