Почему я получаю несоответствие типов для карты в качестве параметра маршрутизации?

Я использую playframework 2.3.8 и у меня есть View-класс. Там есть кнопка:

<button class="btn btn-default" type="button" onclick="@routes.Application.sendMap(myMap)" method="POST">Send</button>

Я хочу добавить пару вопросов / ответов на карту в моем классе контроллера (Application.java):

public static Result sendMap(Map<Question, List<Answer>> sendMap){
    Question question4 = new Question("ertw", "SendMap Question?", 34, "Tim");
    Answer answer41 = new Answer("werw", "ertw", "SendMap Answer 1!", 12, "Oliver");
    Answer answer42 = new Answer("tzsdfu", "ertw", "SendMap Answer 2!", 1, "Marcus");

    List<Answer> answerList4 = new ArrayList<Answer>();
    answerList4.add(answer41);
    answerList4.add(answer42);

    sendMap.put(question4, answerList4);
    return ok(views.html.frageAntwort.render(sendMap));
}

В моем rout.conf я добавил маршрут к классу контроллера и использую Map в качестве параметра:

POST    /QuestionMap                    controllers.Application.sendMap(Map)

Но теперь я получаю ошибку:

type mismatch; found : String required: java.util.Map[model.Question,java.util.List[model.Answer]]

Почему карта конвертируется в строку?

2 ответа

Решение

У меня это почти полностью работает сейчас... хотя я не совсем понимаю, как:

Моя кнопка в view-классе, теперь без каких-либо параметров

<a href="@routes.Application.sendMap()"><button class="btn btn-default" type="button">Absenden</button>

Мой контроллер-класс теперь корректно помещает другую поддельную пару вопросов / ответов в карту, а затем возвращает ее с измененной картой в index.scala.html:

return ok(views.html.index.render(myMap));

Самая важная часть происходит в route.conf:

GET     /                           controllers.Application.index()
GET     /Fragenliste                controllers.Application.sendMap()
GET     /FrageStellen               controllers.Application.askQuestion()
GET     /Einstellungen              controllers.Application.showSettings()
GET     /Quiz                       controllers.Application.startQuiz()

sendMap () теперь не имеет параметров и указывает на другой сайт с именем /Fragenliste, И есть часть, которую я не до конца понимаю - если я использую

GET     /                           controllers.Application.sendMap()

это указывает на index()- метод в Application.java. Там у меня есть еще один метод с именем initialize():

public static Result index() {
    initialize();
    (...)
}

public static void initialize() {
    Question question1 = new Question("xyz", "Do Androids dream?", 127, "Marcus");
    Answer answer11 = new Answer("zab", "xyz", "Only of electric sheep!", 70, "Tibor");
    Answer answer12 = new Answer("qwert", "xyz", "No, they dont!", 10, "Sarah");

    List<Answer> answerList1 = new ArrayList<Answer>();
    answerList1.add(answer11);
    answerList1.add(answer12);

    myMap.clear();
    myMap.put(question1, answerList1);
}

В этом карта построена, после того как я очистил потенциальные остатки старых карт. Таким образом, мой маршрут указывает на индекс, и теперь новый вопрос не добавляется! Почему я не могу указать на индекс, а он все еще работает?

В принципе:

mysite.com/ = index ... user presses button for new question, gets transfered to
mysite.com/enterQuestion ... user enters question and hits "submit", gets transfered to
mysite.com/ = index

Мое решение на данный момент:

mysite.com/ = index ... user presses button for new question, gets transfered to
mysite.com/enterQuestion ... user enters question and hits "submit", gets transfered to
mysite.com/ANOTHER_SITE != index, but looks and works exactly like the index!

Есть ли способ сделать это? Если да, моя проблема будет полностью решена.

Тип параметров по умолчанию: String: "Для параметров типа String тип параметра является необязательным". Документация Play. Вы также можете посмотреть там: Как создать карту - разместить в Stack Overflow. Вы должны создать правильный шаблон и затем передать его через параметр в вашем методе в файле конфигурации

Другие вопросы по тегам