PrimefacesでcommandButtonが押されたときに、データをdatatableにロードしたい。最初にページをロードするときは、データテーブルを空にする必要がありますが、commandButtonをクリックした後、データテーブルをロードする必要があります。どのようにできるのか。私はprimefacesの初心者です。
			
			4867 次
		
2 に答える
            2        
        
		
ページが最初に読み込まれるときに、dataTableの値を初期化しないでください。その後、p:dataTableを更新できます
IDを更新します。追加するだけ
<p:dataTable id="dataTableId" ...>
<p:commandButton update="dataTableId" ..>
あなたのcommandButtonに。さらに、次のいずれかを使用する必要があります
action="#{bean.addStuffToDataTable}"
また
actionListener="#{bean.addStuffToDataTable}"
dataTableにデータを入力するために、 p:commandButtonの属性として。これらの属性のいずれかを使用する前に、必ずactionとactionListenerの違いをお読みください。
于 2012-10-18T12:51:58.160   に答える
    
    
            2        
        
		
あなたがあなたの質問で説明したものから、ここにサンプルがあります(これは@Manuelが説明したものの単なる実用的なサンプルです)。バッキングBeanのリストは空であるため、最初のレンダリングでは、データテーブルは空になります。コマンドボタンをクリックすると、doPopulateList()メソッドが起動します。このメソッドは、リストにデータを入力します。最後に、update属性により、datatableはバッキングBeanからリストをリロードします。今回は、リストに4つのレコードが入力されます。
<h:body>
    <h:form>
        <p:dataTable id="fooTable" value="#{dataTableBean.dataTableList}" var="record">
            <p:column><h:outputText value="#{record}"/></p:column>
        </p:dataTable>
        <p:commandButton value="Populate DataTable" actionListener="#{dataTableBean.doPopulateList()}" update="fooTable"/>
    </h:form>
</h:body>
DataTableSampleバッキングBean:
@ManagedBean
@ViewScoped
public class DataTableBean implements Serializable {
    List<String> dataTableList = new ArrayList<String>();
    /**
     * @return the dataTableList
     */
    public List<String> getDataTableList() {
        return dataTableList;
    }
    /**
     * @param dataTableList the dataTableList to set
     */
    public void setDataTableList(List<String> dataTableList) {
        this.dataTableList = dataTableList;
    }
    public void doPopulateList(){
        dataTableList.add("Record1");
        dataTableList.add("Record2");
        dataTableList.add("Record3");
        dataTableList.add("Record4");
    }
}
于 2012-10-19T12:33:43.270   に答える