0

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

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

我希望当我调用ctx.request().getQueryString("domain")时,我会得到 www.bakeryxcom。否则,我会得到一个空响应,并且无法从操作中获取此值。

请在下面找到我为这项任务所做的工作。我必须从上下文参数中获取 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.
      }
 }

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

4

1 回答 1

-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(...);
}
于 2013-07-02T17:21:20.593 回答