我可以从模板中获取一个queryString但是从未设法获得两个。 这是我的控制器
def get = Action { implicit request =>
val requestedProviderName = request getQueryString "providerName"
val requestedReleaseId = request getQueryString "releaseId"
}
就像我的路由器产生
这是我的router.conf:http://localhost:9000/fail?providerName=oneProviderName
这一切都是正确的,但我想通过多个选项。
GET /fail @controllers.mycontroller.get
我所拥有的观点是如此基本,
@helper.form(routes.mycontroller.get) {
<select name="providerName" class="selectpicker" data-live-search="true">
@for((providerName, failedReleasesNumber) <- providers){
<option id="selectedvalue" value="@providerName" selected="selected">
@providerName, @failedReleasesNumber
</option>
}
</select>
<div class="row-fluid">
<div class="span6">
<label>Start Date: <input type="date" id="startDate"></label>
<label>End Date: <input type="date" id="endDate"></label>
<label>Release Id: <input type="number" id="releaseId"></label>
<label>Results Start?!: <input type="number" id="resultStart"></label>
<label>Max Results: <input type="number" id="maxResults"></label>
<input type="submit" class="btn btn-primary" value="Get Failed Releases" style="margin-top:-10px">
</div>
</div>
}
我的问题是,我如何定义这些输入,因为我希望它们在QueryPath中。 我在网上搜索过但无法找到解决方案。每个人都写了关于路由器的东西,但是如何在模板中定义它们是没有答案的,或者我完全错过了一些东西。我正在使用Play Framework 2.1.1和Scala
答案 0 :(得分:2)
问题1:
在路径文件
中使用类似http://localhost:9000/fail?providerName="xyz"&secondQueryString="abc"
的URL定义
GET /fail controllers.mycontroller.get(providerName: String, secondQueryString: String)
并修改get方法签名,如get(providerName: String, secondQueryString: String)
问题2:
当为 GET 方法定义表单操作时,默认情况下所有输入字段都将在查询字符串中传递。只需确保使用为url路径(在路由文件中)定义的相同查询字符串名称和html文件中使用的名称。
答案 1 :(得分:1)
我找到了答案,因为在操作应该是GET之前已经回答了
然而,例如
<input type="number" name="maxResults" id="maxResults">
只是输入字段的id是不够的,因此,应该有名字字段,并且一切都好之后。即使不需要函数的输入变量。你可以得到像
val requestedProviderName = request getQueryString "providerName"
返回模板(视图)中输入变量的可选值。