Play Framework Multiple QueryStrings

时间:2014-09-19 14:18:12

标签: scala playframework playframework-2.1

我可以从模板中获取一个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

2 个答案:

答案 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"

返回模板(视图)中输入变量的可选值。