4

Restletリソースクラス内でアプリケーションルートを取得する必要があります(ServerResourceを拡張します)。私の最終目標は、別のリソースへの完全な明示的なパスを返そうとすることです。

私は現在使用getRequest().getResourceRef().getPath()していますが、これで必要なものがほぼ手に入ります。これは完全なURL(のようなhttp://example.com/app)を返しません、それは私に/resourceNameを返します。したがって、私が抱えている2つの問題は、スキーマ(httpまたはhttpsの部分)とサーバー名が欠落していることと、アプリケーションがマウントされている場所に戻らないことです。

したがって、「http://dev.example.com/app_name/person」に人のリソースがある場合、「http://dev.example.com/app_name」に戻る方法を見つけたいと思います

Restlet 2.0 RC3を使用して、GAEにデプロイしています。

4

4 に答える 4

2

getRequest().getRootRef().toString()それは私が欲しいものを私に与えるように見えます。getRequest().getRootRef()getPathgetRelativePartなどの)のメソッド呼び出しを組み合わせて使用​​しようとしましたが、不要なものが返されるか、nullが返されました。

于 2010-04-30T03:31:45.107 に答える
1

request.getRootRef()またはrequest.getHostRef()

于 2010-04-29T20:18:15.613 に答える
1

サービスコンテキストからベースURLを取得し、それをリソースと共有し、必要に応じてリソースパスを追加するだけです。

MyServlet.init():

String contextPath = getServletContext().getContextPath();
getApplication().getContext().getAttributes().put("contextPath", contextPath);

MyResource:

String contextPath = getContext().getAttributes().get("contextPath");
于 2010-11-11T07:05:53.570 に答える
0

サーブレットのコンテキストには、レストレットのアプリケーションからアクセスできます。

org.restlet.Application app = org.restlet.Application.getCurrent();
javax.servlet.ServletContext ctx = ((javax.servlet.ServletContext) app.getContext().getAttributes().get("org.restlet.ext.servlet.ServletContext"));
String path = ctx.getResource("").toString();
于 2014-10-14T21:59:19.840 に答える