从不调用Action方法

时间:2014-11-24 00:38:06

标签: java playframework-1.x

我正在开发一个带有play framework 1.2.4的java web应用程序。在我看来,我尝试在控制器中调用一个方法,但它不起作用。 这是视图代码:

%{ url='/'+lang+'/artists/item?.name?.asString()+'-'+item?.id?.asString(); }% 
<a href="${url}"></a>

所以网址类似于localhost:9000/en/artists/artistName-artistId, 对于动作代码:

public static void artistView(String lang, String artistName, String artistId, String mode)  {
    //my code here
            }

路线conf:

GET     /{<(fr)|(en)|(ar)>lang}/artists/{artistName}-{<[0-9]{32}>artistId}                                                      MyControllerName.artistView(mode:'overview')

有了这个,我的动作永远不会被调用。我做错了什么 ? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先,我看到您的网址错误,应该是:

%{ url='/'+lang+'/artists/'+item?.name?.asString()+'-'+item?.id?.asString(); }% 

无论如何,我认为你可以解决它。

其次,我想你想要你的artistId是1个字符到32个字符的数字,而不是32个字符。

所以,route.conf应该是:

GET     /{<(fr)|(en)|(ar)>lang}/artists/{artistName}-{<[0-9]{,32}>artistId}                                                      MyControllerName.artistView(mode:'overview')

如果您想了解原因,请阅读有关正则表达式的更多信息?

注意:(mode:'overview')无效。如果您想设置默认值,请在控制器中执行以下操作:

if (mode == null) mode = "overview";

希望有所帮助。