我正在开发一个带有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')
有了这个,我的动作永远不会被调用。我做错了什么 ? 提前谢谢。
答案 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";
希望有所帮助。