我的应用程序控制器中有这个方法:
public static Result searchJourney(String address) {
return ok(
views.html.searchResults.render(Journey.searchByAddress(address),journeyForm)
);
}
它将字符串作为参数并将此字符串传递给模型方法searchByAddress。按地址搜索方法返回我的模型对象列表,这些对象是查询的结果。然后将其用于填充表单。
public static List<Journey> searchByAddress(String address) {
return find.where().ilike("start_loc", "%"+address+"%").findList();
}
我遇到的问题是从视图表单中获取地址参数。这是视图的样子:
@main("Journey Search", "search") {
<body>
<form>
Search for journeys starting in a town/city:
<input type="text" name="arg"></br>
<input type="submit" onsubmit="@routes.Application.searchJourney("@arg")" value="Search">
</form>
}
所有路由都按预期工作,但我似乎无法将此参数传递给控制器方法。当我在文本框中输入一个值时,URL 会更新以显示我的输入:
http://localhost:9000/search?arg=testvalue
但是结果页面永远不会像我预期的那样呈现。
更新:
<form action="@routes.Application.searchJourney(arg)">
Search for journeys starting in a town/city:
<input type="text" name="arg"></br>
<input type="submit" value="Search">
</form>
如果 arg 周围没有引号和 @ 符号,我会收到not found: value arg
错误消息。
要呈现的结果 HTML
@(listJourneys: List[Journey], journeyForm: Form[Journey])
@import helper._
@main("Search Results", "search") {
<h1>Search Results</h1>
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>Starting Location</th>
<th>End Location</th>
<th>Participant Type</th>
<th>Date</th>
<th>Time</th>
<!--<th>User</th>-->
</thead>
<tbody>
</tr>
@for(journey <- listJourneys) {
<tr>
<td>@journey.id</td>
<td>@journey.start_loc</td>
<td>@journey.end_loc</td>
<td>@journey.participant_type</td>
<td>@journey.date</td>
<td>@journey.time</td>
</tr>
}
</tbody>
</table>
}