[英]How to do a search query in two fields one an int on a string
我不知道這是否可行,所以我想我會在這里發布
是否有可能有一個輸入框,例如,如果用戶輸入一個字符串或一個整數,它將搜索數據庫的兩列,即id(int)和用戶名(string),我如何將其傳遞給來自視圖,因為我在getters中將類型設置為int或字符串,但是如果我想搜索兩種類型,該怎么辦?
這就是我目前在數據庫中搜索int的方式
<h:inputText id="search" value="#{userdetailsController.search}" />
<p:commandButton value="Search" action="#{userdetailsController.submit}" update="group" />
userdetailsController
private String search;
private List<Userdetails> item; // No need for DataModel here.
public List<Userdetails> getItem() {
return item;
}
public String submit() {
item = ejbFacade.searchByString(search);
return ""; //change this !, testing only
}
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
並在用戶詳細信息
@NamedQuery(name = "Userdetails.searchByUsername", query = "SELECT u FROM Userdetails u WHERE u.username like :username")
多謝你們
只需將屬性保留為String
然后檢查action方法是否表示數字。
例如
public void submit() {
if (search.matches("[0-9]+")) {
item = ejbFacade.searchByInt(Integer.parseInt(search));
} else {
item = ejbFacade.searchByString(search);
}
}
或者,您也可以在服務方法本身中處理它,這取決於您希望服務的可重用性。 服務(EJB)也可以由JSF之外的其他前端使用,例如JAX-RS(RESTFul),普通Servlet /過濾器等。
public void submit() {
item = ejbFacade.search(search);
}
同
public List<Userdetail> search(String query) {
if (query.matches("[0-9]+")) {
return searchByInt(Integer.parseInt(query));
} else {
return searchByString(query);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.