我正在尝试重写Web应用程序(Eclipse RAP)的参数。参数是我自己的,不是RAP处理的。

目标是将/rap/viewer/locale/fr重写为/rap/viewer?locale=fr

但是已经有一个简单的测试失败了:

RewritePatternRule rule = new RewritePatternRule();
rule.setPattern("/test/viewer");
rule.setReplacement("/rap/viewer");
rewriter.addRule(rule);


问题在于,Web应用程序需要的资源似乎位于相对路径中,因此:
/rap/rwt-resources/resources.js变成/test/rwt-resources/resources.js。然后将导致黑屏。

关于如何克服这个问题的任何想法吗?

最佳答案

重写仅适用于路径。

它不适用于查询参数,URI参数,URI模板,路径参数,主机,端口和方案。

由于您的需求还涉及多个上下文,因此您可能需要编写自己的Jetty级别的处理程序,该处理程序位于Handler树中所有上下文之前,该树执行您感兴趣的逻辑。

但是,看到您正在使用Eclipse RAP时,实际上就无法从Eclipse RAP中很好地访问原始Jetty Server处理程序树(完成此操作的要求)。

10-08 03:08