我正在尝试创建一个搜索模块,以根据用户选择的选择标准从数据库中搜索商店详细信息
index.scala.html
@import helper._
@import helper.twitterBootstrap._
@main(Html("Home")) {
<!-- Main component for a primary marketing message or call to action -->
<div class="jumbotron">
<h1>Shop Directory</h1>
<p>Lets you search a nearby Shop and get to know their location</p>
<p>Search Shop by Product or Shop name</p>
<form class="form-inline" action="@routes.SearchController.search()" method="post">
<input type="text" class="form-inline input-lg" placeholder="Product/Shop name" name="keyword" required="keyword required">
<select class="form-inline input-lg" id="Select1" name="criteria">
<option value="">-:Select Criteria:- </option>
<option value="shop">Shop</option>
<option value="product">Product</option>
</select>
<button class="btn btn-lg btn-primary" role="button">Search</button>
</form>
</div>
}
搜索.java
package viewmodels;
public class Search {
public String keyword;
public String criteria;
}
SearchResult.java
package viewmodels;
import models.Shop;
import play.mvc.Controller;
import java.util.ArrayList;
import java.util.List;
public class SearchResult extends Controller {
public String criteria;
public String keyword;
public List<Shop> shops;
public SearchResult() {
shops = new ArrayList();
}
}
SearchController.java
package controllers;
import models.Product;
import models.Shop;
import play.data.DynamicForm;
import play.data.Form;
import play.mvc.Controller;
import viewmodels.Search;
import viewmodels.SearchResult;
import java.util.List;
import play.mvc.Result;
import static play.data.Form.*;
public class SearchController extends Controller {
public static Result search() {
Form<Search> requestData = form(Search.class).bindFromRequest();
Search datatosearch = requestData.get();
// String criteria="shop";
String criteria = datatosearch.criteria;
SearchResult result = new SearchResult();
result.criteria = criteria;
result.keyword = datatosearch.keyword;
if (criteria == "shop") {
List<Shop> shops = Shop.findByShopName(datatosearch.keyword);
result.shops.addAll(shops);
}
else if (criteria == "product") {
List<Shop> shops = Product.findByShopName(datatosearch.keyword);
result.shops.addAll(shops);
}
return ok(views.html.search.results.render(result));
}
}
如果我在我的 SearchController.java 中执行 String criteria="shop"
或 String criteria="product"
那么它工作正常,这意味着我的模型查询是正确的,但是如果我用 String criteria = datatosearch.criteria
执行上面的代码,它会显示一个空白屏幕。
我正在使用 play 框架,我真的坚持这一点,我们将不胜感激。
最佳答案
您正在将字符串与 ==
运算符进行比较,这是一个禁忌。将您的字符串比较更改为使用 String.equals
,这样您实际上是在比较值而不是对象引用。
if (criteria.equals("shop") {
...
}
else if (criteria.equals("product") {
...
}
您可能还想添加一些验证来检查 criteria
是否不是 NULL
。
关于html - Select 标签总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22746791/