Сначала извините за мой английский...
Я искал весь интернет, но я не могу найти ответ на свой вопрос. Я пробовал все, посмотрел документацию, учебники, видеоролики и т. Д...
Я положил две кнопки в верхней части моей страницы, чтобы пользователь мог изменить язык, но я не могу поймать значение на моем контроллере, я сделал все, но никогда не мог справиться. Я новичок в игре :( пожалуйста, помогите... !!
У меня это на мой взгляд:
<'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: непризнанный язык: значение]
У вас есть сообщения. {Lang} (например, messages.es или messages.en) в папке conf прямо?
И в application.conf действительные языки должны существовать как;
application.langs = "EN, ES"
Если у вас есть это в любом классе, который расширяет Controller, вы можете запустить этот метод;
changeLang ( "ES");
Но в вашем случае кажется, что значение идиомы в вашей функции - это "значение". Поэтому, если вам хорошо, просто замените заголовок формы как;
< form method="GET" action="/language"/
>
(предполагая, что/язык будет маршрутизироваться к вашему методу)
и замените имена входов html как "idiom", чтобы вы передали правильное значение ввода.
Я сделал небольшую модификацию с вашим комментарием ниже, и вот как я сейчас.
Маршрут:
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 расширяет Controller {
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 (value)"
И ошибка страницы показывает маршрут LanguageController:
POST/@[email protected](language:String)
Ваш 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: как установить язык (i18n) из поддомена