問題タブ [omnifaces]
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.
jsf-2 - ViewExpiredException の処理 (JSF 2.1、Seam2、Primefaces 3.4.1、Omnifaces 1.3)
フレームワーク JSF 2.1、Seam 2.3、Primefaces 3.4.1、Omnifaces 1.3 を使用して ViewexpiredException を正しく処理しようとすると、ひどい問題が発生します。
ここで、私が primefaces フォーラムに投稿した問題の完全な説明を見ることができます: http://forum.primefaces.org/viewtopic.php?f=3&t=28215
この投稿では、omnifaces を試すように言われました (現在これを試みています)。だから私は自分のプロジェクトでそれを設定します(正しいかどうかはわかりません)。
これをfaces-config.xmlに追加します:
すべてが機能しているように見えます.FullAjaxExceptionHandlerFactoryはexpcetionを処理し、ログインページにリダイレクトしようとしているようです(primefacesフォーラムの私の最後の投稿を参照).間違いとか。
インターネットで見つけたほとんどすべてのソリューションを試してみましたが、何もうまくいかないようです. us/img831/7459/pic4w.png
前もって感謝します
jsf - 「for」タグを使用してコンポジション コンポーネントで Omnifaces Validator を使用する
コンポジションコンポーネントに omnifaces ライブラリの o:validator タグを使用したい:
バリデータは次のように呼び出されます。
しかし残念なことに、omnifaces のバリデータ タグは "for" 属性を無視しているようです。JSF の元のバリデータ タグでは「for」タグは機能しますが、「compareTo」タグの値が ValueExpression の場合は機能しません。
カスタムタグハンドラを実装しようとしましたが、それもうまくいきませんでした。
html - MyFaces 2.0.4はh:formタグをレンダリングできません
h:formタグを挿入してもレンダリングされない単純なJSF2.0xhtmlページがあります。通常のタグを使用でき、問題なくレンダリングされます。
私の仕様は次のとおりです。-Java1.6-WebSphere8.0.0.5とその組み込みのApacheMyFaces2.0.4-PrimeFaces 3.4.2 --OmniFaces 1.3-HTML 5タグをサポートする必要があるため、使用しています
簡単なテストページは次のとおりです。
また、NetBeansとTomcat 7を使用してこのテストページをテストし、MyFaces 2.0.4を依存関係としてリストし、PrimeFacesとOmniFacesの依存関係をpomから取り出して、どちらも問題を引き起こしていないことを確認しました。ページはまだレンダリングされません。
DOCTYPEを標準に変更することに注意してください。
また、動作していません。
エラーは次のとおりです。
javax.faces.FacesException:java.lang.NullPointerException:serialFactory at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241)at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl .java:156)org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:258)at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)atorg.apache.catalina.core。 ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)at org org.apacheの.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)。catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 99)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:407)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:585)atorg。 apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run(AprEndpoint.java:1813)(java.util.concurrent.ThreadPoolExecutor)。runWorker(ThreadPoolExecutor.java:1110)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603)at java.lang.Thread.run(Thread.java:722)原因:java.lang.NullPointerException :org.apache.myfaces.shared_impl.util.StateUtils.getAsByteArray(StateUtils.java:268)のserialFactory org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:235)のorg.apache.myfaces .renderkit.html.HtmlResponseStateManager.writeViewStateField(HtmlResponseStateManager.java:120)at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeState(HtmlResponseStateManager.java:111)at javax.faces.render.ResponseStateManager.writeState(ResponseStateManager.java :67)org.apache.myfaces.application.jsp.JspStateManagerImpl.writeState(JspStateManagerImpl.java:598)at javax.faces.application.StateManager.writeState(StateManager.java:200)at org.apache.myfaces.application.ViewHandlerImpl.writeState(ViewHandlerImpl.java:302)at javax.faces.application.ViewHandlerWrapper.writeState(ViewHandlerWrapper .java:65)at javax.faces.application.ViewHandlerWrapper.writeState(ViewHandlerWrapper.java:65)at org.apache.myfaces.shared_impl.renderkit.html.HtmlFormRendererBase.encodeEnd(HtmlFormRendererBase.java:179)atjavax.faces。 component.UIComponentBase.encodeEnd(UIComponentBase.java:519)at javax.faces.component.UIComponent.encodeAll(UIComponent.java:626)at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)at javax.faces org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguageの.component.UIComponent.encodeAll(UIComponent.java:622)。renderView(FaceletViewDeclarationLanguage.java:1320)at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)at javax.faces.application .ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)。 ..17以上59)org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)...17詳細59)org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)...17詳細
MyFaces2.0.6で問題が修正されていることに気づきました。問題は、WASv8のMyFaces2.0.4に接続されていることです。WAS v8の組み込みCDIを使用する必要があるので、EJB3.1と組み合わせることができます。組み込みのCDIは、組み込みのMyFacesでのみ使用できます(WAS v8のマニュアルにそのように記載されています)。
回避策の提案はありますか?代わりに単純な<form>
タグを使用できますか?<form>
タグを使用してもMyFacesエラーは表示されません。
jsf - ページ レンダリング中の例外のエラー ページ
私の JSF アプリケーションのバッキング Bean では、特定の例外がいつでもスローされる可能性があり、エラー ページにリダイレクトすることでこれに対応したいと考えています。omn ifaces FullAjaxExceptionHandlerを含めました。web.xml
Ajax リクエストを含むほとんどの場合、これで問題なく動作ResourceNotFoundException
します。エラー ページが表示されます。ただし、注釈が付けられたメソッドで例外がスローされると@PostConstruct
、常にエラー コード 500 の一般的なページが表示されます。
これは、JSF が例外を別のものでラップし、メカニズムがそれをweb.xml
認識しないためでしょうか? はいの場合、これを期待どおりに機能させるにはどうすればよいですか?
サーバーログに表示される例外トレースは次のとおりです。
jsf - OmniFaces:SelectItemsConverter が PrimeFaces: PickList で機能しない
PrimeFaces Picklist で SelectItemsConverter を使用しようとしています。
XHTML:
コンバータ:
豆:
コンバーターのデバッグ中に、getAsString メソッドが正常に動作していることがわかりました。しかし、フォームを送信した後、両方の配列リスト (dlmFirmaSource と dlmFirmaTarget) は空です。
OmniFaces ショーケースでは、
「omnifaces.SelectItemsConverter を使用すると、たとえば複雑な Java モデル オブジェクトを f:selectItems の値としてドロップダウンに入力し、JSF にそれらを自動的に変換させることができます。カスタム コンバーターは、場合によってはそれに基づいてジョブを実行する必要がある場合があります。高価なサービス/DAO 操作。」
ただし、PickList コンポーネントの場合、f:selectItems タグは存在しません。
SelectItemsConverter は PickList コンポーネントをサポートしていますか?
jsf - datatable と lazydatamodel を使用した FullAjaxExceptionHandler
プライムフェイス 3.4 とオムニフェイス 1.3 で検索ページを作成しています。マネージド Bean は SessionScoped です。
次のようなxhtmlページがあります。
SearchBean には、クエリと lazyDataModel を初期化するメソッド search があります。
LazyDataModel は、db に対して実際のクエリを実行します。
セッションがタイムアウトすると、lazyDataModel ロード メソッドで例外が発生しますが、FullAjaxExceptionHandler はそれをインターセプトできません...
lazyDataModel で例外を管理して、期限切れのセッション ページにリダイレクトするにはどうすればよいですか?
返信ありがとうございます。
hibernate - TomcatでのSpringSecurity/ JSF / Hibernateの偶発的なセッションハイジャック?
先日、とても奇妙で恥ずかしいことが起こりました。何が起こったのかを説明する言葉がありません。
私のアプリは、すべてTomcat7でJSF2.1、Hibernate 4、SpringSecurityと統合されたSpring3を実行します。私は経営幹部レベルの重要な人物と電話をしていて、同じページで同時にテスト環境にいました。彼は、彼のページが私の個人アカウントの詳細を思いついたのとほぼ同じ瞬間に、私がナビゲートしていたページにナビゲートしに行きました。私は彼を信じていなかったので、私は彼のオフィスに歩いて行きました、そして確かに、彼はどういうわけか彼がパスワードを持っていない私のアカウントとしてログオンしました。
アプリケーションは患者の健康情報を保護するため、経営幹部レベルに何が起こったのかを完全に報告するように命じられましたが、これがどのように可能であったかがわかりません。私はコードベースを精査し、何も思いつきませんでした。正確なシナリオを何度も再現しようとしましたが、再現できませんでした。私は私が満足しているという知識に基づいた推測さえ持っていません。
Tomcatアプリケーションコンテキストの実装に保存されているセッションで安全でないスレッド操作があった可能性があると思いますが、再現できない場合はこれを証明する方法がありません。また、Spring Securityは他のリクエストよりも先にフィルターとして機能し、転送するため、おそらく他のサーブレットフィルターの1つが干渉したと思いました。他の2つは、最近追加したPrimefacesFileUploadフィルターとOmnifacesSEOフィルターでした。
Omnifacesフィルターは、実際にはPrimefaces File Uploadフィルターと干渉し、2つが互いにうまく機能するように構成を調整する必要があったので、それも可能性があると感じています。
同様の問題を引き起こしているSpringSecurityの既知のバグはありますか?ApplicationContextから誤って間違ったセッション状態を提供することに関してTomcatに既知の問題がありますか?他の誰かが同様の問題を経験したか、これについていくつかのユニークな洞察を持っていますか?
編集:これを投稿した直後に私はこれを見つけました、ほんの数日前に投稿しました:
セッションの取り違え-Apachehttpdとmod_jk、tomcat、springsecurity-他のユーザーのデータを提供
これは、Tomcatの前にApache httpd + mod_jkプラグインがあるのとほぼ同じセットアップなので、私は夢中ではありません:)
アップデート:
mod_jkまたはApacheを前面に配置しなくても、開発環境で問題を再現できたため、これを原因として確実に除外できます。
javascript - ページ上部の JSF スクロール バー
ブラウザのスクロールバーをどうしようか迷っていました。ページの先頭に移動します。大きすぎる登録画面を開発していますが、必要なフィールドがいくつか含まれています。必須フィールドが通知されていない場合、ユーザーにエラー メッセージが表示されました。スクロールバーが上がらないのが悩みで、ページの一番上まで行ってほしい。私は Primefaces と JQuery を使用していますが、これは機能しません。
jsf - FullAjaxExceptionHandler を使用してトップレベルのページにリダイレクトする
JSF ページの例外処理には、FullAjaxExceptionHandler を使用しています (ありがとう、BalusC ;-))。エラー処理は機能しますが、何らかの理由でトップレベルにリダイレクトできません。つまり、iFrame で例外が発生し (はい、使用すべきではないことはわかっています...)、このフレームにエラー ページが表示されます。トップレベルのページにリダイレクトするにはどうすればよいですか? ?faces-redirect=true では何も起こりません。
ティア、
ラルフ。
ajax - JSF Ajax (ViewRoot) 更新後のリダイレクト
私は omnifaces FullAjaxExceptionHandler を使用して、例外が ajax リクエストで発生したときにリダイレクトします。私の場合は、ViewExpiredException をキャッチします。
私は私のケースを説明しようとします:
1) セッションを無効にして、この "/login?faces-redirect=true" のようなアクションを返すための commandButton (ajax リクエスト) を含む index.xhtml ページがあります。
2) 同じブラウザで index.xhtml を 2 回開きます。
3) 最初の index.xhtml でボタンをクリックします (セッションは無効になり、login.xhtml にリダイレクトされます)。
この時点で、ユーザーが正常にログに記録されているかどうかを確認するカスタム PhaseListener があることを考慮に入れます。login.xhtml はパブリック アクセス用ですが、index.xhtml は許可されたユーザーに制限されています。
4) 2 番目の index.xhtml に移動し (この時点でセッションは無効になります)、ボタンをクリックして例外を起動します。
FullAjaxExceptionHandler は ViewExpiredException をキャッチし、index.xhtml をレンダリングしようとしますが、セッションが無効化されたように、フェーズ リスナーがユーザーが承認されているかどうかを確認しているのと同時に、ユーザーは承認されておらず、フェーズ リスナーが responseSendError(403) を起動しますが、そうではありませんajax リクエストであるため、403.xhtml が表示されます。
PhaseListener から 403.xhtml を表示するために 403 エラーを送信するにはどうすればよいですか? responseSendError は、FullAjaxExceptionHandler の通常のプロセスをキャンセルしています。その例外が発生した瞬間、リダイレクトは行われません。
さらに、ビューの有効期限が切れる時期を明確にするために、index.xhtml にリダイレクトする必要があります。これは、本番環境では CAS (Central Authentication Service) を使用しているためです。