2

OCPsoft Rewriteをバージョン1.0.5.Finalから1.1.0.Finalに更新すると、次のルールが機能しなくなり、修正方法がわかりません。

.addRule(
    Join.path("/{i}/{d}")
        .where("i").matches("[-_a-zA-Z0-9~*]{8}")
        .where("d").matches("[-_a-zA-Z0-9~*]{32}")
        .to("/resources/html/user/doSomething.html?i={i}&d={d}")
)

Rewrite変更ログには、私を助けるのに役立つ可能性のある1つのポイントがあります。

構成文字列がリテラルになりました。正規表現は、次のようなパラメータを使用して構成する必要があります。.defineRule().when(Path.matches("/{*}").where("*").matches(".*"))

私が得る例外は次のものです:

Exception starting filter OCPsoft Rewrite Filter
    java.lang.NullPointerException
        at org.ocpsoft.rewrite.servlet.config.rule.Join.where(Join.java:199)
        at org.ocpsoft.rewrite.servlet.config.rule.Join.where(Join.java:47)
        at com.myapp.util.RewriteConfigurationProvider.getConfiguration(RewriteConfigurationProvider.java:39)
        ...
4

2 に答える 2

2

以下はトリックを行いました、私はただ結合節を並べ替える必要がありました:

.addRule(
    Join.path("/{i}/{d}")
        .to("/resources/html/user/doSomething.html")
        .where("i").matches("[-_a-zA-Z0-9~*]{8}")
        .where("d").matches("[-_a-zA-Z0-9~*]{32}")
        .withRequestBinding();
)

これを理解し、Rewriteサポートフォーラムで私の質問に答えてくれたリンカーンに感謝します。

于 2013-02-03T22:27:55.213 に答える
1

うーん..それはバグのように見えます。これを再現しようとしますが、ターゲットURLで{i}再定義する必要はありません。{d}次のようにリクエストバインディングを使用すると、Joinが自動的に処理します。

.addRule(
   Join.path("/{i}/{d}")
    .where("i").matches("[-_a-zA-Z0-9~*]{8}")
    .where("d").matches("[-_a-zA-Z0-9~*]{32}")
    .to("/resources/html/user/doSomething.html").withRequestBinding();
)

そうすれば問題はなくなると思います。.withInboundCorrection()古いURLのリクエストを.html新しいURLにリダイレクトする場合にも使用できます。

それでも問題が解決しない場合は、サポートフォーラムに投稿してください。問題が解決されます:)

申し訳ありませんが、問題が発生しました。これ以上問題が発生しないことを願っています:)

于 2012-12-28T18:11:35.383 に答える