如何从控制器模型获取数据到视图

时间:2013-11-20 15:12:32

标签: jsf datatable

嗨,大家好抱歉再次发帖,但这真让我感到困惑

我有一个查询,我可以运行,用户输入一个字符串,然后应用程序将在连接到应用程序的数据库中搜索这个,这一点我有工作,但现在我已成功运行queury我我不确定如何从中检索数据并能够在h:datatable

的视图中使用它

目前要进行搜索,这就是视图中用户输入的网页页面

<h:inputText id="search" value="#{userdetailsController.search}" />   
                    &nbsp;
                    <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")})

我怎样才能完成此过程,检索要在控制台中打印的数据,例如,我需要调用什么来执行此操作?

1 个答案:

答案 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>的默认值,您可以省略它。

相关问题