2014-09-02 22 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輸入的名稱爲「成語」 這樣你就可以通過輸入正確的價值。