簡體   English   中英

如何在兩個字段中進行搜索查詢,一個字段為一個字符串

[英]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}"  />   
                    &nbsp;


                    <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM