2012-09-21 38 views
2

我正在使用PrimeFaces的JSF 2.0。我有一個<p:dataTable>。我在列中有一個<p:inputText>。我可以編輯並保存它。我也有一個重置按鈕,但它不起作用。如何清除p:dataTable中的所有輸入字段?

<h:form id="f"> 
    <f:facet name="head">Enteri Karbon Hesaplaması</f:facet> 
    <p:dataTable value="#{orderBean.orderList}" var="o" id="bir"> 
     <p:column> 
      <f:facet name="header">Hayvan Adi</f:facet> 
      <h:outputText value="#{o.hayvanadi}"/> 
     </p:column> 
     <p:column> 
      <f:facet name="header">Karbon Salinimi Değeri</f:facet> 
      <h:outputText value="#{o.karbonsalinimi}"/> 
     </p:column> 
     <p:column> 
      <f:facet name="header">Adet</f:facet> 
      <p:inputText id="spinner" maxlength="12" value="#{o.adet}"/> 
     </p:column> 
    </p:dataTable> 
    <p:commandButton value="Kaydet" action="#{orderBean.saveAction()}" update="bir"/> 
    <p:commandButton value="Temizle" update="bir" process="@this" actionListener="#{orderBean.reset}"/> 
</h:form> 

這是我支持bean的相關部分:

@ManagedBean 
@SessionScoped 
public class OrderBean { 
    private static final ArrayList<Order> orderList = 
     new ArrayList<Order>(Arrays.asList(
      new Order("Süt İneği", 99 , 0),    
      new Order("Diğer İnekler", 58, 0),  
      new Order("Koyun",5, 0), 
      new Order("Keçi",5, 0),  
      new Order("At ",18, 0),  
      new Order("Eşek ",10, 0)     
     ) 
    ); 

    public String saveAction() { 
     for (Order order : orderList){ 
      order.setEditable(false); 
     } 

     return null; 
    } 

    public String editAction(Order order) { 
     order.setEditable(true); 
     return null; 
    } 

    public void reset() { 
     RequestContext.getCurrentInstance().reset("form:f"); 
    } 

    // ... 
} 

回答

4

更改您的命令按鈕的類型重置,即:

<p:commandButton type="reset" value="Temizle" update="bir" process="@this" actionListener="#{orderBean.reset}"/> 

而且,因爲你基本上是試圖再次將數據表空置空,您可以將orderList設置爲復位函數中的空列表。

+0

非常多 – user3190168

+0

+1這就是我要做的 – gtgaxiola

+0

如果你只把''Type ='reset'''所有的輸入重新啓動,但不會去其他頁面......我該如何解決這個問題? – cheloncio

1

您可以使用<p:commandButton type="reset"<p:commandButton update="@form"重設表格。後者也用於p:inplace

編輯:你的按鈕不工作的原因是因爲其更新屬性中引用的id不正確。它應該是:formId:dataTableId@form雖然更容易。