2012-02-07 50 views
1

我一直在寻找在这个例子中的部分文件“指定静态ARGS”playframework航线使用get参数ID和行动方法不灵

http://www.playframework.org/documentation/1.2.4/routes

却使得他们称之为渲染没有意义(页)而不是render(id)。也许这不是我的使用情况下,一个很好的例子......

我有以下的路线......

GET {company}.${envDomain}/dashboard Dashboard.dashboardPage 

但我得到的是说下面的路径没有发现错误:

GET {company}.dev.xxxxxxx.com/dashboard 

有趣的是,它说"GET /dashboard"没有发现,在我的网址我看到http://dev.xxxx.com/dashboard代替{}公司的.dev.xxxx.com /仪表板,应该是有....

为什么路线颠倒不起作用?

我的dashboardPage源代码就是这样的。

public static voi 
+1

嗨,Dean,看起来你的问题被截断了,你的控制器源只被列为“public static voi”,我认为这是不正确的;)另外,你可以粘贴你的完整路线文件 – grahamrb 2012-02-07 01:55:12

+0

你的意思是'但它没有任何意义,因为他们调用渲染(页面)而不是render(id)。也许这不是我用例的好例子......'?它确实很有意义;-)。我也试着回答这个问题,但我可能会把你的问题弄错。 – Stefano 2012-02-07 15:25:02

回答

2

这可以通过Play 1.1(Virtual Hosts)中实现的功能实现。

只要确保在执行反向路由时,您正在使用'@@{}'而不是'@{}',如示例所示。

+0

@@是一个很大的帮助,最终成为问题的一部分......谢谢! – 2012-02-09 03:11:23

+0

@DeanHiller欢迎您:) – 2012-02-09 08:23:52

0

从OP的评论了解无证功能

据编辑后,我知道你不能在路由使用域相关参数。 他们只关心 Request path

显然有关于play.mvc.Router class主机的东西。目前还不清楚。

我的答案的其余部分仍然是一个可行的解决方法...虽然不是很动态我承认。

你正在尝试做什么 必须 可以在前端级别完成......例如:用nginx捕获子域并将其翻译为具有重定向的路径。然后在你的路线,你可以这样做:

GET /dashboard/{company}/ 

关于render(尽管这几乎将是一个不同的问题):

当你调用render(param)用String作为第一个参数,它会去加载模板param。当param是其他任何东西时,它将使该变量对模板可用...

+1

不,他们有关于在主机名中使用参数的具体代码,但没有例子,我读了它是在发行说明中,但没有在文档中,以及在某些时候,所以他们拥有它,它现在是我的一半(有些部分工作,有些则不工作)。 – 2012-02-08 02:27:04

+0

@DeanHiller有趣..和经常玩游戏一样,完全没有记录。事实上,我在[play.mvc.Router类](https://github.com/playframework/play/blob/1.2.x/framework/src/play/mvc/Router.java)中看到了一些关于hostPattern的内容,结束。但我承认这完全不清楚。 – Stefano 2012-02-08 03:48:04