Play Framework 2 + java在getQueryString调用中不返回URL动态部分

时间:2013-07-02 17:09:42

标签: java playframework playframework-2.1

这可能是一个重复的问题,但我无法找到解决方案。结果,我发布了自己的。

我的网址看起来像“/customer/www.bakeryx.com”,其中 www.bakeryx.com 是网址的动态部分,并映射到“/customer/:domain".

我希望当我打电话给 ctx.request()。getQueryString(“domain”)我会得到www.bakeryxcom。否则,我得到一个null响应,并且无法从该操作中获取此值。

请仔细阅读我的工作以完成此任务。我必须从上下文args中获取ROUTE_PATTERN。

 public class DomainVerifierAction extends Action<DomainVerifierFilter> {
      @Override
      public Result call(Http.Context ctx) throws Throwable {
         //how to get the domain here??

         //work around is to get the route_pattern 
         String routePatternPlay = (String) ctx.args.get("ROUTE_PATTERN");
         String path = ctx.request().path();

         //added logic to extract domain from the PATH using ROUTE_PATTERN.
      }
 }

问题:这个问题有解决办法吗?

1 个答案:

答案 0 :(得分:-1)

我认为您遇到的问题是您使用的getQueryString方法正在寻找“?” URL中的运算符,与传统的GET请求一样(例如?id=1)。相反,尝试将域作为控制器方法中的参数传递。例如:

routes文件中:

GET   /customer/:domain   controllers.Application.function(domain: String)

然后在Play控制器中(假设Play Framework 2.x):

public static Result function(String domain){
         //Do something with the passed domain string here
       return ok(...);
}