問題タブ [jsf-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JSF 2.0 と MyFaces トマホーク
JSF 1.2 & tomahawk 1.1.9 & no facelets を使用し、JSF 2.0 & tomahawk 1.1.9 を使用する既存の Web アプリの JSF アップグレードを調査しています。
これは私の調査結果です。
at:dataScroller で使用される t:dataTable を除いて、すべての tomahawk コンポーネントが機能しました – ただし、t:dataTable で preserveDataModel="true" の場合のみ。
回避策は preserveDataModel="false" を設定することです
-壊れる理由はここで説明されています: http://www.mail-archive.com/dev@myfaces.apache.org/msg40741.html
preserveDataModel="true" を preserveDataModel="false" に変更した場合の影響については、こちらで説明しています: http://wiki.apache.org/myfaces/Working_With_DataTable_And_PreserveDataModel
既存の JSF 1.2 タグは、JSF 2.0 ランタイムで引き続き機能します
他の誰かが似たようなことをしたことがありますか?あなたの経験は何ですか?
私はWebを高低で検索しましたが、このトピックについてはあまり見つかりませんでしたが、現時点では、新しいライブラリを数週間テスト環境に出し、その後ライブ環境に出すことにかなり自信を持っています.
jsf - CDIタイムアウトによりNPEが発生する
(JSF 2で)会話のタイムアウトをキャッチしてユーザーを新しいページにリダイレクトする方法はありますか?会話がタイムアウトすると、厄介なNullPointerExceptionsが発生します。
すべてのNPEでユーザーをリダイレクトできましたが、それはネットが大きすぎるようです。
java - JSF:ViewExpiredExceptionをキャッチできません
Glassfishv3でJSF2.0アプリケーションを開発していて、ViewExpiredExceptionを処理しようとしています。しかし、私が何をするにしても、自分のエラーページではなく、常にGlassfishエラーレポートを受け取ります。
VEEの発生をシミュレートするために、VEEを起動する次の関数をバッキングBeanに挿入しました。この関数は、JSFページからcommandLinkを介してトリガーしています。コード:
最初は、web.xmlにエラーページを追加するだけで試してみました。
しかし、これは機能しません。エラーにリダイレクトされませんが、Glassfishエラーページが表示されます。このページには、次のコンテンツを含むHTTPステータス500ページが表示されます。
次に試したのは、 JavaServerFaces 2.0-完全なリファレンスで説明されているように、ExceptionHandlerFactoryとCustomExceptionHandlerを作成することでした。そこで、faces-config.xmlに次のタグを挿入しました。
そして、これらのクラスを追加しました:ファクトリ:
カスタム例外ハンドラ:
しかし、それでもエラーページにリダイレクトされません-上記と同じHTTP500エラーが発生します。何が間違っているのですか、例外が正しく処理されないという私の実装に何が欠けている可能性がありますか?どんな助けでも大歓迎です!
編集
はい、正直です。実際、私のコードは実際にはScalaで書かれていますが、それは長い話です。いつもJavaの問題だと思っていました。この場合の本当のエラーは私自身の愚かさでした。私の(Scala)コードのCustomExceptionHandlerで、「i.remove();」の行を追加するのを忘れました。そのため、ViewExpiredExceptionは、処理後もUnhandledExceptionsQueueにとどまり、「バブルアップ」しました。そして、それがバブルアップすると、ServletExceptionになります。
お二人ともご迷惑をおかけして申し訳ございません。
jsf - JSF 2.0 RI (Mojarra) がクラスのアノテーションをスキャンしないのはなぜですか?
Eclipse ベースの JSF プロジェクトに War と Jar プロジェクトがあります。Faces-config.xml を使用して宣言するのではなく、アノテーションを使用して FacesConverter を宣言することにしました (無数にあるものの中で)。
そして、.xhtml で直接passwordFieldStringConverterを使用します。
JSF は、展開時に私の戦争で jar をスキャンし、どのクラスに注釈が付けられているかを検出します (それに応じてアプリケーションを自動構成します)。私の問題は、JSF が、私が持っているどのクラスの注釈を付けているかを明らかに検出していないことです。
War プロジェクトにはすべての .xhtml ファイルとプロジェクトの faces-config.xml があり、Jar プロジェクトにはすべての顔関連の Java コード (アクション Bean、マネージド Bean、カスタム コンバータなど) があります。
jsf - Faces-redirect=true JSF で
?faces-redirect=true
URLが変更されるようにユーザーをリダイレクトしたいので、JSF2でを使用しています。
JSF1.2 では</redirect>
、faces-config に追加しました。
JSF2 では、自分の URL に追加する必要があります return home?faces-redirect=true.
問題は、私faces-redirect=2
が使用したときにJSF1.2では見られなかったものをURLで見ることです</redirect>
ブラウザの URL に表示せずに、アクションで face-redirect を使用するにはどうすればよいですか?
私の瓶のリスト:
- antlr-2.7.6.jar
- aopalliance-1.0.jar
- spectjrt.jar
- 雰囲気-compat-tomcat-0.5.jar
- 大気-ランタイム-0.5.jar
- commons-beanutils-1.7.0.jar
- commons-collections-3.2.jar
- commons-dbcp-1.2.2.jar
- commons-digester-2.0.jar
- commons-fileupload-1.2.1.jar
- commons-httpclient-3.1.jar
- commons-io-1.4.jar
- commons-logging-1.1.1.jar
- commons-pool-1.5.4.jar
- dom4j.jar
- ehcache-1.2.4.jar
- hibernate-annotations.jar
- hibernate-cglib-repack-2.1_3.jar
- hibernate-commons-annotations.jar
- hibernate3.jar
- itext-1.4.8.jar
- javassist.jar
- javax.persistence.jar
- jhighlight-1.0.jar
- jsf-api.jar
- jsf-impl.jar
- jstl-api-1.2.jar
- jstl-impl-1.2.jar
- jta-1.1.jar
- log4j-1.2.15.jar
- メール.jar
- mysql-connector-java-5.1.0-bin.jar
- org.springframework.aop-3.0.1.RELEASE-A.jar
- org.springframework.asm-3.0.1.RELEASE-A.jar
- org.springframework.aspects-3.0.1.RELEASE-A.jar
- org.springframework.beans-3.0.1.RELEASE-A.jar
- org.springframework.context-3.0.1.RELEASE-A.jar
- org.springframework.context.support-3.0.1.RELEASE-A.jar
- org.springframework.core-3.0.1.RELEASE-A.jar
- org.springframework.expression-3.0.1.RELEASE-A.jar
- org.springframework.instrument-3.0.1.RELEASE-A.jar
- org.springframework.instrument.tomcat-3.0.1.RELEASE-A.jar
- org.springframework.jdbc-3.0.1.RELEASE-A.jar
- org.springframework.jms-3.0.1.RELEASE-A.jar
- org.springframework.orm-3.0.1.RELEASE-A.jar
- org.springframework.oxm-3.0.1.RELEASE-A.jar
- org.springframework.test-3.0.1.RELEASE-A.jar
- org.springframework.transaction-3.0.1.RELEASE-A.jar
- org.springframework.web-3.0.1.RELEASE-A.jar
- org.springframework.web.portlet-3.0.1.RELEASE-A.jar
- org.springframework.web.servlet-3.0.1.RELEASE-A.jar
- org.springframework.web.struts-3.0.1.RELEASE-A.jar
- poi-3.2-FINAL.jar
- primefaces-2.0.3-SNAPSHOT.jar
- slf4j-api-1.5.11.jar
- slf4j-log4j12-1.5.11.jar
- spring-aop.jar
私の web.xml
java - JSF 2.0 h:selectManyListbox f:selectItems-常に空
selectItemsを内部に含むselectManyListboxを使用したJSF作成フォームがあります(プロジェクトで使用可能なすべてのタグが含まれている必要があります)。ただし、selectItemsリストは常に空です。ページがレンダリングされるとき、リストボックスには何もありません。それでも、バッキングBeanのリストには3つのエントリが含まれています(チェック済み)。私は何が間違っているのですか?
バッキングBean:
そしてページ:
私はこのページへのアナロジーに従ってそれをやろうとしました:http: //digitaljoel.wordpress.com/2010/01/11/jsf-2-custom-converter/
私が書いたコンバーターはまだテストされていません。
java - JSF2 - レンダリング応答がコンポーネント設定を再レンダリングしないのはなぜですか?
次の問題が発生しています。
ビューが復元された後、フィールドの検証により、JSF は Render response フェーズにスキップします (必須フィールドが空であるため)。ただし、現在の値 (空の文字列) がレンダリングされて、ユーザーが何も入力していないことをユーザーに示す場合でも、次のステートメントは実行されません。
それはバグですか、それとも機能ですか?助けてください。
完全なテスト例 (Netbeans 6.8 プロジェクト) はこちら: http://www.221b.cz/so/JSFTester.zip
チュートリアルから: 「リクエストがポストバックで、リクエスト値の適用フェーズ、プロセス検証フェーズ、またはモデル値の更新フェーズでエラーが発生した場合、元のページはレンダリング レスポンス フェーズでレンダリングされます」( http://java.sun .com/javaee/5/docs/tutorial/doc/bnaqq.html )
ビューが「ビューの復元」フェーズで復元され、その後、リクエスト/検証/更新モデルの適用フェーズが失敗し、「レスポンスのレンダリング」にスキップすると、レンダリング レスポンスはクライアントに変更を加えずに復元されたビューのみを渡すということですか?
マネージド Bean (TesterBean.java):
複合コンポーネント (field-component.xhtml):
ページ (index.xhtml):
編集、ブライアンの提案 (field-component.xhtml) に従って
しかし、JSTL を削除してもまだ機能しません:-( h:inputText の http リクエストからの新しい値で value 属性のみが更新されているようですが、残りの属性はフェーズ Render Response で再評価されません。
java - JSF2複合コンポーネントにコンポーネントスコープのBeanを含めることはできますか?
複合コンポーネントのインスタンスにプライベートで、そのインスタンスが存続する限り存続する「コンポーネントスコープ」Bean、つまり「複合コンポーネント内のローカル変数」をどのように作成できるのか疑問に思いました。
以下に詳細を示し、例を示します。
「計算機」コンポーネントがあるとします。これは、ユーザーが数式を入力し、その値を評価できるようにするものです。オプションで、関連する関数もプロットします。
次のような複合コンポーネントを作成できます。
- 数式を受け入れるためのテキストボックス
- 「評価」と「プロット」という2つのボタン
- 関数をプロットする別のネストされたコンポーネント
それは明らかに自己完結型の機能です。使用したい人が<math:expressionEvaluator/>と言うだけでよいように
しかし、明らかに、実装にはJavaオブジェクト(式を評価するもの、プロットポイントを計算するものなど)が必要です。これは、ビュースコープではなく、このコンポーネントのこのインスタンス専用のBeanである可能性があると思います。または、コンポーネントのすべてのインスタンス間で共有されるリクエストスコープのBean。
どうすればそのようなBeanを作成できますか?それは複合コンポーネントでも可能ですか?
java - JSF 2:Facelets コンポジション (テンプレート) がエラーページにレンダリングされない
Java EE 6 アプリケーション サーバー (GlassFish v3) で Facelets を使用して JSF 2.0 を使用しています。web.xml で、例外のエラー ページを構成しました。
これは/error-all.xhtml
テストページです:
commandLinks の 1 つをクリックすると、意図的に RuntimeException をスローするマネージド Bean を実装しました。その際、/error-all.xhtml ページの内容が表示されますが、Facelets による処理が取得されないため、template="/resources/templates/decorator.xhtml"は適用されません。
Google Chrome を使用すると、「タイトル」と「本文」のみが表示され、レイアウトは表示されません。Chrome に要素の検査を依頼すると、完全なソース コードが取得されます。このソース コードには、Chrome が明らかに理解できないui:compositionタグとui:defineタグが含まれています。これは、Facelets ページが処理されていないという私の理論を裏付けるものです。
それで、私の質問は、これを修正する方法ですか?エラー ページが処理され、テンプレートとエラー ページのコンテンツを組み合わせた結果である HTML コードを返すようにするにはどうすればよいですか?
ajax - とは本当にすることになっていますか?同封のフォームのみをPOSTします
太っている場合は申し訳ありませんが、f:ajaxタグのexecute = "@ all"は実際に何をするはずですか?ページ上のすべての要素を送信することを期待していましたが、ページ上のすべてのフォームではなく、囲んでいるフォームの値のみをPOSTしているようです。
例えば
form2のみがクリックで投稿されます。
mojarra2.0.2を使用します。