2014-09-02 53 views
1

首先对不起我的英语...用按钮切换语言上发挥框架

我正在寻找所有的互联网,但我无法找到我的问题的答案。我尝试了一切,查看文档,教程,视频等...

我把两个按钮放在我的页面顶部,用户可以更改语言,但我无法捕捉到我的控制器上的值,我做了一切,但永远无法处理。我玩:(请帮助新... !!

我有这对我的看法:

<`form method="GET" action="@{Application.language("value")}"/`> 
    <`input> name="language" type="submit" value="en" title="@Messages("button.en")" </`> 
    <`input> name="language" type="submit" value="es" title="@Messages("button.es")" </`> 
<`/form`> 

这我控制器上:

public static void language(String idiom) { 
    String key = null; 
    key = idiom; 

    if(key.isEmpty()){ 

    } else { 
     Lang.apply(idiom); 
    } 
} 

但是当我尝试吸引我的控制器上的值总是我收到这样的信息:

[RuntimeException的:无法识别的语言:值]

回答

0

你的HTML看起来有点嫌疑,你能清理它并重新发布你的控制器和路由吗?

同时,这大致就是我希望看到,以确保您的参数获得通过在正确:

路线:

GET  /language @controllers.LanguageController.index(language: String) 

控制器:

LanguageController { 
... 
    public Result index(String language) { 
     if(language != null && !language.isEmpty()){ 
      Lang.apply(idiom); 
     } 
     ... return 
    } 
} 

要在Play 2中进行设置,请参阅此帖 playframework 2.2 java: how to set language (i18n) from subdomain

0

我在下面对你的评论做了一些修改,这就是我现在的样子。

路线:

POST / @controllers.LanguageController.changeLanguage(language: String) 

查看:

<form method="POST" action="changeLanguage("value")"/> 
    <input name="language" type="submit" value="en" title="English" </> 
    <input name="language" type="submit" value="es" title="Spanish" </> 
</form> 

控制器:

公共类LanguageController扩展控制器{

public Result changeLanguage(String language) 
{ 
    if(language != null && !language.isEmpty()) 
    { 
     Lang.apply("en"); 
    } 
    else 
    { 
     String idiom = language; 
     Lang.apply(idiom); 
    } 
    return ok(index.render("")); 
} 

现在我有这样的消息错误:

对于请求 'POST/changeLanguage(值)'

和页面错误显示LanguageController此途径:

POST/@[email protected](language:String) 
0

您有消息{郎}(如messages.es或messages.en)在conf文件夹中?

而在application.conf中应该存在有效的langs;

申请。langs =“en,es”

如果您在扩展Controller的任何类中都有这些,您可以运行此方法;

changeLang(“es”);

但在你的情况下,你的函数中的成语的值似乎是“值” 因此,如果你只是将表单头替换为;

< form method="GET" action="/language"/>

(假设/语言将路由到您的方法)

和替换的HTML输入的名称为“成语” 这样你就可以通过输入正确的价值。