問題タブ [ocpsoft-rewrite]

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.

0 投票する
1 に答える
151 参照

jsf - commandLink は、rewrite RewriteRule がアクティブ化された状態でアクションを呼び出さない

私は現在、WildFly 10 の JRE 8 で Mojarra 2.2.13 で rewrite-config-prettyfaces 3.4.0.Final を使用しています。ここで、pretty-config.xml ファイルを削除して、ルール ベースの RewriteConfiguration に切り替えたいと思います。これを作成し、pretty-config url-mapping をルールにマッピングすると、アプリケーションは正常に動作するように見えます。しかし、h:commandLink アクションが呼び出されなくなったことに気付きました。pretty-config.xml に戻すと正常に動作します。元に戻してください。これが RewriteConfiguration で機能しない理由はありますか?

私のクラスパスには、次の書き換え jar が含まれています。

  • rewrite-servlet-3.4.0.Final.jar
  • rewrite-config-prettyfaces-3.4.0.Final.jar (ただし、これは動作していないセットアップでは削除されます)

以下に、私のコードのスニペットをいくつか示します。

どうもありがとう!

私のかなり構成はこの構成を持っています

私の RewriteConfiguration ファイル

私の単純化した dummy.xhtml ファイルは次のようになります。

注: commandLink に関連するセクションは、実際には catalogDashboard.jsf の一部です。欠落しているダミーの書き換え規則が存在すると考えてください。

commandLinkアクションを介して呼び出すメソッドを持つ私のBean

0 投票する
1 に答える
259 参照

jsf - パラメーターを使用した書き換え/ PrettyFaces により、IllegalStateException: 応答がコミットされた後にセッションを作成できません

JSF 2.2 アプリケーションで注釈付きの URL リライターを使用したいので、Rewrite(PrettyFaces後継者 ) をいじり始めました。

私のアプリケーションはまだ 7.x で実行されている単なる Hello World であり、TomEE特別な依存関係はないと思います。no web.xml、 empty faces-config.xml、 empty で実行しますbeans.xml

テスト用に新しい専用バッキング Bean と xhtml を作成しましたRewrite。問題は、Url にパラメーターを追加するたびに、応答がコミットされた後にセッションを作成できませんIllegalStateException

3.3.3にダウングレードしようとしましPrettyFacesたが、まったく同じエラーが発生します。

バッキング Bean のコードは次のとおりです。

とビュー

アクセス時のスタックトレースhttp://localhost:8080/testRoot/aaa

java.lang.IllegalStateException: 応答がコミットされた後にセッションを作成できません org.apache.catalina.connector.Request.doGetSession(Request.java:2952) 2361) org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:896) javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:231) javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java: 231) org.apache.myfaces.context.servlet.SessionMap.setAttribute(SessionMap.java:56) org.apache.myfaces.util.AbstractThreadSafeAttributeMap.put(AbstractThreadSafeAttributeMap.java:109) org.apache.myfaces.util.AbstractThreadSafeAttributeMap. put(AbstractThreadSafeAttributeMap.java:38) org.apache.myfaces.application.viewstate.ServerSideStateCacheImpl.saveSerializedViewInServletSession(ServerSideStateCacheImpl.java:250) org.apache.myfaces.application.viewstate.ServerSideStateCacheImpl.saveSerializedView(ServerSideStateCacheImpl.java:642) org.apache.myfaces.renderkit.html.HtmlResponseStateManager.saveState(HtmlResponseStateManager.java:138) org.apache.myfaces.application.StateManagerImpl.saveView(StateManagerImpl.java:279) org.apache.myfaces.shared.view.JspViewDeclarationLanguageBase.renderView(JspViewDeclarationLanguageBase.java:220) org.apache.myfaces.application.ViewHandlerImpl.renderView( ViewHandlerImpl.java:313) com.ocpsoft.pretty.faces.application.PrettyViewHandler.renderView(PrettyViewHandler.java:163) javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:58) javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:58) org.omnifaces.viewhandler.OmniViewHandler.renderView(OmniViewHandler.java:115) org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116) org.apache.myfaces.lifecycle. LifecycleImpl.render(LifecycleImpl.java:267) javax.faces.webapp.FacesServlet.service(FacesServlet.java:200) org.apache.tomee.myfaces.TomEEWorkaroundFacesServlet.service(TomEEWorkaroundFacesServlet.java:47) org.apache.tomcat. websocket.server.WsFilter.doFilter(WsFilter.java:52) com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137)execute(RenderResponseExecutor.java:116) org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:267) javax.faces.webapp.FacesServlet.service(FacesServlet.java:200) org.apache.tomee.myfaces. TomEEWorkaroundFacesServlet.service(TomEEWorkaroundFacesServlet.java:47) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) com.ocpsoft. pretty.PrettyFilter.doFilter(PrettyFilter.java:137)execute(RenderResponseExecutor.java:116) org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:267) javax.faces.webapp.FacesServlet.service(FacesServlet.java:200) org.apache.tomee.myfaces. TomEEWorkaroundFacesServlet.service(TomEEWorkaroundFacesServlet.java:47) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) com.ocpsoft. pretty.PrettyFilter.doFilter(PrettyFilter.java:137)ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137)ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:137)

パターン ( ) からパラメーターを削除してpattern = "/testRoot"アクセスhttp://localhost:8080/testRootすると、問題はなく、ビューが適切にレンダリングされることに注意してください。

私は何を間違っていますか?(prettyfaces のバージョンを指定しました。Rewrite のバージョンも指定でき@Joinますが、エラーは同じであるため、問題は別の場所にあると思います...)

0 投票する
0 に答える
130 参照

filter - WEB-INF からの jsf ページ/リソースの提供

任意の場所から jsf ページ/リソースを提供する方法の 1 つは RequestDispatcher#forward()を使用することであることを理解しています

たとえば、http://domain/contextpath/someotherlink.xhtmlへの応答をマップできます

/WEB-INF/serving.xhtml

リソースの場所request.getRequestDispatcher("/WEB-INF/serving.xhtml").forward(request, response)

しかし、マップされたページの場所は次のようなアクションコンポーネントに表示されます<h:form>

つまり<form method="post" action="/contextpath/WEB_INF/serving.xhtml" >OCPsoft Rewrite URLRewriteFilterを使用しても。

@Alex Tsurika はサンプルを提供しましたが、JSF Expert @Baluscは、同じディスパッチ アプローチを提案したにもかかわらず、このアプローチのセキュリティ ホールについてコメントしました。

質問:

  1. @Baluscによって提起されたように、このセキュリティホールをどのように軽減できますか(更新: @Baluscがコメントでクリアしたため、何もないと思います)

  2. <form method="post" action="/contextpath/someotherlink.xhtml" >代わりにどのように表示できますか<form method="post" action="/contextpath/WEB_INF/serving.xhtml" >

@Paul Hの質問を解決するために

WEB-INF の JSF ページの場所からレンダリングされたフォームを送信することはできますか?

ありがとう。

0 投票する
1 に答える
20 参照

jsf - JSF - URL の大文字と小文字を区別しない (OCPSoft)

どの文字も小文字または大文字になる可能性があるため、複数のルールを定義する代わりに、大文字と小文字を区別せずにOCPSoft書き換えで書き換えルールを定義する方法はありますか?

何かのようなもの:

バックグラウンド:

404 エラーをログに記録すると、小文字の URL だけで多くのリクエストが発生します。