1

初めて JSF を使用しようとしていますが、JSF の JSP タグライブラリがわかりません。

Eclipse (Indigo) で新しい JSP ファイルを作成するときに、いくつかのテンプレートから選択できます。

  • 新しい JavaServer Faces (JSF) ページ (html)
  • 新しい JavaServer Faces (JSF) ページ (xhtml)
  • 新しい JavaServer Faces (JSF) ページ (xhtml、xml 構文)
  • ...

html テンプレートは使用します<%@ taglib prefix="..." uri="..." %>が、xhtml テンプレートは を使用し<html xmlns:...="...">ます。

xhtmlテンプレートを選択すると、JSF taglibがサポートされていないようです。使用する<h:outputText value="#{bean.beanMethod}" />と例外が発生したためです。

[#|2012-10-04T10:51:45.734+0200|警告|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=39;_ThreadName=Thread-2;| ApplicationDispatcher[/testjsf] PWC1231: サーブレット jsp の Servlet.service() が例外 org.apache.jasper.JasperException をスローしました: /b.jsp(14,25) PWC6228: #{...} はテンプレート テキスト本文では許可されていません。org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:81) で org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:376) で org.apache.jasper.compiler.ErrorDispatcher.jspError (ErrorDispatcher.java:188) で org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:755) で org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:947) でorg.apache.jasper.compiler.Node$Nodes.visit(Node.java:2297) org.

html テンプレートを使用すると、機能します。

では、xhtml テンプレートで JSF を使用するにはどうすればよいでしょうか。

を使用して動作します:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

一緒に、しかし私は宣言がディレクティブxmlnsを置き換えると信じていましたか?<%@ taglib %>

ご協力ありがとうございました

4

1 に答える 1

2

JSP は、ほぼ 3 年前に JSF 2.0 ビュー テクノロジとして非推奨になりました。なんで使おうとするの?


具体的な問題に戻ります:

PWC6228: #{...} はテンプレート テキスト本文では使用できません。

これは基本的に、<h:outputText>が によって解析されていないFacesServletため、EL 式を含むプレーンなテンプレート テキストとして解釈されることを意味します。ただし、#{}in template text as in<p>#{foo}</p>は JSP ではサポートされていません。後継の Facelets でのみサポートされています。

<h:outputText>によって解析されていないというFacesServletことは、ブラウザのアドレス バーに表示されるリクエスト URL が、Webアプリケーションの で定義されている と一致し<url-pattern>なかったことを意味するだけです。この方法では、が呼び出されず、すべての JSF コンポーネントが解析されず、プレーン テキストとして扱われます。FacesServlet/WEB-INF/web.xmlFacesServlet

*.xhtmlおそらく、Facelets ファイルが正常に動作することを説明する上でそれをマッピングしましたか? b.xhtml次に、代わりに で開く必要がありb.jspます。

ただし、前述のとおり、JSP は JSF 2.0 以降非推奨です。<h:head>、などの JSF 2.0 の優れた点をすべて使用することはできません。Facelet テンプレート<f:ajax>の優れた点は言うまでもありません。JSP を忘れて、その後継の Facelets に固執します。

于 2012-10-04T13:43:39.973 に答える