2

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

    // ...
}
4

2 に答える 2

4

コマンド ボタンのタイプをリセットするように変更します。

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

また、基本的にデータテーブルを再び空にしようとしているので、リセット関数で orderList を空のリストに設定するだけです。

于 2012-09-21T17:59:42.060 に答える
1

<p:commandButton type="reset"またはを使用してフォームをリセットできます<p:commandButton update="@form"。後者は にも使用されp:inplaceます。

編集: ボタンが機能しない理由は、更新属性で参照されている ID が正しくないためです。である必要があります:formId:dataTableId。ただし、の@form方が簡単です。

于 2012-09-22T09:31:35.980 に答える