【问题标题】:How to clear all input fields in p:dataTable?如何清除 p:dataTable 中的所有输入字段?
【发布时间】:2012-09-21 12:17:39
【问题描述】:

我正在使用带有 PrimeFaces 的 JSF 2.0。我有一个<p:dataTable>。我在一个专栏中有一个<p:inputText>。我可以编辑并保存它。我也有一个重置按钮,但它不起作用。

<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");  
    }  

    // ...
}

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    将命令按钮的类型更改为重置,即:

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

    此外,由于您基本上是想再次使数据表为空,您可以在重置函数中将 orderList 设置为空列表。

    【讨论】:

    • 如果你只把''Type="reset"''所有输入重新启动但没有转到其他页面......我该如何解决这个问题?
    【解决方案2】:

    您可以使用&lt;p:commandButton type="reset"&lt;p:commandButton update="@form" 重置表单。后者也用于p:inplace

    编辑:您的按钮不起作用的原因是其更新属性中引用的 id 不正确。应该是:formId:dataTableId。不过@form 更简单。

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 1970-01-01
      • 2023-03-09
      • 2012-05-19
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      相关资源
      最近更新 更多