0

我正在使用 playframework 2.3.8 并且有一个视图类。里面有一个按钮:

<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));
}

在我的 routes.conf 中,我已将路由添加到控制器类并Map用作参数:

POST    /QuestionMap                    controllers.Application.sendMap(Map)

但现在我得到了错误:

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

为什么地图会被转换成字符串?

4

2 回答 2

1

默认参数类型是字符串:“对于字符串类型的参数,参数类型是可选的。” 文档播放。您还可以在那里查看:How to create Map - post on Stack Overflow。您应该创建正确的模板,然后通过配置文件的方法中的参数将其传递

于 2015-05-04T14:54:47.657 回答
0

我现在几乎可以完全正常工作了……尽管我不完全了解如何:

我在视图类中的按钮,现在没有任何参数

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

我的控制器类现在正确地将另一个问题/答案对放入地图中,然后将其与更改后的地图一起返回到 index.scala.html:

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

最重要的部分发生在 routes.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()

它指向 Application.java 中的 index() 方法。在那里,我有另一种方法称为 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!

有没有办法这样做?如果是,我的问题将完全解决。

于 2015-05-05T11:21:09.827 回答