0

控制器可以将数据作为渲染方法中的参数发送给视图。视图如何将数据发送到控制器?

编辑:让我澄清一下。

Application.showQuestion(Question q){ render(q); }

showQuestion.html 显示问题“q”并有一个文本框用于输入“a”到“q”的答案。表单上的提交按钮调用方法 createAnswer。我不仅要传递答案'a',还要传递问题'q'。createAnswer(q, a) 会实现同样的效果吗?我的目标是:

a.问题=q;q.addAnswer(a);

4

2 回答 2

1

我猜你想要做的是让用户通过点击你生成的网页来调用正确的控制器。

您正在寻找的是所谓的reverse routing,Play 有一个机制。你可以在这里看到它是如何工作的。然后,如果您尝试从表单中获取输入,我建议您使用文档中详述的 Form 对象

于 2012-05-29T10:59:44.567 回答
1

我不完全确定我是否正确理解了您的问题,但希望是的:

如何将问题 q 与答案 a 一起传递的最简单方法是使用预定义的模板“表单”。您可以执行以下操作:

showQuestion.html:

#{form @Application.createAnswer(q), id:'answerForm'}
   ...
   // add input for the answer here
   ...
#{/form}

然后在 Application.java 中定义方法 Application.createAnswer(q, a),它会被调用。因此表单标签中使用的参数和表单中的输入组合在一起。这部分#{form @Application.createAnswer(q)...实际上只做的是,它在表单中创建隐藏的输入字段,当单击提交按钮时,这些字段被传递给控制器​​。

关于表单标签的详细信息: playframework 1.2.4 中的表单标签

请注意,我所描述的适用于 playframework 1.2.4。我不确定它在 2.0.1 中是否以同样的方式工作,但我(真的)希望是的。

于 2012-05-29T05:35:56.517 回答