嗨,大家好抱歉再次发帖,但这真让我感到困惑
我有一个查询,我可以运行,用户输入一个字符串,然后应用程序将在连接到应用程序的数据库中搜索这个,这一点我有工作,但现在我已成功运行queury我我不确定如何从中检索数据并能够在h:datatable
目前要进行搜索,这就是视图中用户输入的网页页面
<h:inputText id="search" value="#{userdetailsController.search}" />
<p:commandButton value="Search" action="#{userdetailsController.submit}" ajax="true" />
然后转到
@Named("userdetailsController")
@SessionScoped
public class UserdetailsController implements Serializable {
@EJB
private String search;
private List<Userdetails> item; // No need for DataModel here.
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;
}
然后
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
private List userList;
/* trying out a search function */
public List<T> searchByString(String string) {
System.out.println("in SearchByString");
return getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList();
}
进行搜索
@Entity
@Table(name = "USERDETAILS")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Userdetails.findAll", query = "SELECT u FROM Userdetails u"),
@NamedQuery(name = "Userdetails.findById", query = "SELECT u FROM Userdetails u WHERE u.id = :id"),
@NamedQuery(name = "Userdetails.findByUsername", query = "SELECT u FROM Userdetails u WHERE u.username = :username")})
我怎样才能完成此过程,检索要在控制台中打印的数据,例如,我需要调用什么来执行此操作?
答案 0 :(得分:3)
我不确定如何从中检索数据
您的代码已在submit()
方法中执行此操作。
并且能够在h:datatable
中的视图中使用它
只需将以下内容添加到您的视图中,也可以在同一表单中的命令按钮下方添加,以便显示:
<h:dataTable value="#{userdetailsController.item}" var="userdetails">
<h:column>#{userdetails.username}</h:column>
</h:dataTable>
并确保在命令按钮的ajax更新中涵盖了这一点:
<p:commandButton ... update="@form" />
无关,我只会将令人困惑的属性名称item
重命名为items
,因为它代表项目的集合,而不是单个项目。此外,您的submit()
方法不需要返回空字符串。它也可以声明为void
。另外,ajax="true"
已经是<p:commandButton>
的默认值,您可以省略它。