h:dataTable

时间:2016-02-11 14:12:47

标签: jsf jsf-2 datatable

我在JSF中实现了一个小应用程序。当我在输入字段中输入数据,然后单击搜索按钮时,我的数据表中不显示任何内容。它实际上应该在数据表中返回2条记录。我的方法是正确的,因为我得到了控制台上显示的2条记录。托管bean从另一个java类调用方法SearchShowroom。请注意,我也有一个POJO类。请帮助解决问题。

托管Bean

    public List<Showroom> find() throws Exception{
    ShowroomManager sm = new ShowroomManager();
    return sm.SearchShowroom(make1);

}

JSF

<h:form>


    Enter the make of vehicle to search: 
    <h:inputText value = "#{carManagedBean.make1 }"/> <br> <br>

    <h:commandButton value = "Search" action = "#{carManagedBean.find}">

    <br> <br>


    <h:dataTable value = "#{carManagedBean }" var = "car" border = "1" width = "15%">
        <f:facet name = "header">
        <h:outputText value = "List of Showrooms"/>
        </f:facet>

        <h:column>
            <f:facet name = "header">
                <f:verbatim> Location </f:verbatim>
            </f:facet>
            <h:outputText value = "#{car.manager }"/>
        </h:column>

        <h:column>
            <f:facet name = "header">
                <f:verbatim> Manager </f:verbatim>
            </f:facet>
            <h:outputText value = "#{car.location }"/>

        </h:column>     

    </h:dataTable>
    </h:commandButton>
</h:form>

2 个答案:

答案 0 :(得分:0)

**尝试这种方式,如下所述...... **作为dataTable的值,您应该使用#find()方法填充的对象列表。 **另外想想你可以看看richface或primeface showcases看看(dataTable)的例子

<h:form>
Enter the make of vehicle to search: 
<h:inputText value = "#{carManagedBean.make1 }"/> <br> <br>

<h:commandButton value = "Search" action = "#{carManagedBean.find}" render="yourDataTable">
</h:commandButton>
<br> <br>

<h:dataTable id="yourDataTable" value = "#{carManagedBean.listWithSearchResult }" var = "car" border = "1" width = "15%">
    <f:facet name = "header">
    <h:outputText value = "List of Showrooms"/>
    </f:facet>

    <h:column>
        <f:facet name = "header">
            <f:verbatim> Location </f:verbatim>
        </f:facet>
        <h:outputText value = "#{car.manager }"/>
    </h:column>

    <h:column>
        <f:facet name = "header">
            <f:verbatim> Manager </f:verbatim>
        </f:facet>
        <h:outputText value = "#{car.location }"/>

    </h:column>     
</h:dataTable>

答案 1 :(得分:-1)

您需要设置如下的ajax按钮:

<h:commandButton value="Search" actionListener="#{carManagedBean.find}">
 <f:ajax render="myTable"/>
</h:commandButton>

<h:dataTable id="myTable" value="#{carManagedBean}" var="car">
//your code...
</h:dataTable>

单击按钮后,请不要忘记在dataTable中添加ID以重新显示。

PS:如果您需要保留在同一页面中,请使用“actionListener”。只要您需要加载其他页面,就可以使用属性“action”。