java - 为什么作为路由参数的映射类型不匹配?

标签 java dictionary playframework scala-template

我正在使用 playframework 2.3.8 并且有一个 View 类。其中有一个按钮:

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

我想将问题/答案对附加到我的 Controller 类 (Application.java) 中的 map :

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中,我已将路由添加到 Controller 类并使用Map作为参数:

POST    /QuestionMap                    controllers.Application.sendMap(Map)

但现在我收到错误:

类型不匹配; 发现:字符串 必需:java.util.Map[model.Question,java.util.List[model.Answer]]

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

最佳答案

默认参数类型为String:“对于String类型的参数,参数类型是可选的。” Documentation Play 。您还可以在那里查看:How to create Map - post on Stack Overflow 。您应该创建正确的模板,然后将其传递到配置文件上的方法中的参数

关于java - 为什么作为路由参数的映射类型不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30032882/

相关文章:

java - 在java中连接到共享驱动器

java - 通过 IMAP 获取电子邮件详细信息

python - 递归搜索嵌套字典并将函数应用于搜索键 :value pair

java - 将 securesocial 模块添加到 play 2.2.1 项目

java - ObjectOutputStream 不会保存我的 arrayList

Java 脚本 API (JSR223) Groovy 语言限制

python - 使用 python 处理 JSON 文件

python - 如何以漂亮的方式显示包含词典的列表?

playframework - Play Framework : 2. 0.2 PersistenceException:无法在 Ebean 服务器中注册类

database - 无法使用 Play Framework 2.2.2 连接到远程 Heroku Postgres 数据库