gpt4 book ai didi

jsf - 搜索功能没有做任何事情

转载 作者:行者123 更新时间:2023-12-02 09:46:02 25 4
gpt4 key购买 nike

对不起,如果这是一个糟糕的问题,但这个功能已经让我发疯了好几天所以我想我把它贴在这里看看你们是否可以帮助我

基本上我想从 jsf 页面做的所有事情都是让用户搜索用户并让我返回所有详细信息

<h:form id="searchForm">
<h:outputLabel value="Search: " style="font-weight:bold" />
<h:inputText id="search" value="#{userdetailsController.search}" />
<h:commandButton value="Search" action="index"/>

</h:form>

那是 jsf 页面,工作正常

它调用我的 userdetailsController 类
@Named("userdetailsController")
@SessionScoped
public class UserdetailsController implements Serializable {

private Userdetails current;
private DataModel items = null;
@EJB
private Richard.beans.UserdetailsFacade ejbFacade;
private PaginationHelper pagination;
private int selectedItemIndex;
private String search;

public String getSearch() {
System.out.println("inGetSearch");
return search;
}

public void setSearch(String search) {
this.search = search;
}
......

一个contactService类
@Stateless
public class ContactsService {
// Add business logic below. (Right-click in editor and choose
// "Insert Code > Add Business Method")

@EJB
private UserdetailsFacade cf;

public List<Userdetails> searchByString(String string) {
return cf.searchByString(string);
}


public List<Userdetails> getAllPersons() {
return cf.findAll();
}
}

AbstractFacade 类
   /* trying out a search function */
public List<T> searchByString(String string) {
System.out.println("in SearchByString");
return getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("string", "%" + string + "%").getResultList();
}

以及带有我正在尝试搜索的查询的 Userdetails 类
 @NamedQuery(name = "Userdetails.findByUsername", query = "SELECT u FROM Userdetails u WHERE u.username = :username")})

目前只有 getter 和设置在 Getsearch 中工作

我如何才能完成这项工作,因为我已经在这个功能上花了几天时间,但仍然没有接近,对不起,这是我第一次这样做

谢谢你们

编辑

会添加
public List<Userdetails> getAllPersons() {
if (search == null) {
return cs.getAllPersons();
}
return cs.searchByString(search);
}

在 UserdetailsController 中就足够了吗?

最佳答案

您没有在此处调用任何操作:

<h:commandButton value="Search" action="index"/>

所以它不“做任何事情”确实是合乎逻辑的。

您需要调用托管 bean 操作,该操作依次执行所需代码以从数据库获取所需数据并分配给属性:
<h:commandButton value="Search" action="#{userdetailsController.submit}" />

带内 UserdetailsController :
private String search;
private List<UserDetail> items; // No need for DataModel here.
@EJB
private UserdetailsFacade ejbFacade;

public String submit() {
items = ejbFacade.searchByString(search);
return "index";
}

您的整个 ContactsService顺便说一下,似乎没用。

根据您在更新问题中对 getter 方法的尝试,请不要这样做。出于 Why JSF calls getters multiple times 中提到的原因,您永远不应该在 getter 方法中调用数据库。

关于jsf - 搜索功能没有做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20080195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com