2016-06-17 22 views
0

は、私はこのようなp:selectOneMenuを検証することができますPrimefaces dataTableの単一選択の検証

<p:selectOneMenu id="eventTimezoneDropdown" 
     value="#{myBean.eventTimeZone}" 
     required="true" 
     requiredMessage="The TimeZone must be specified." 
     effect="none"> 
    <f:selectItems value="#{myBean.timeZoneItems}"/> 
</p:selectOneMenu> 

概念的に言えば、同じ目標を達成する単一の行の選択とp:dataTableを使用して - それはあなたがselection属性を使用して1行を選択することができますvalue属性の代わりに<f:selectItems>の代わりにvalue属性を使用します。私はp:dataTable上の任意の検証オプション(例えばrequired属性)が表示されないただし

<p:dataTable id="ActivitiesTable" var="row" 
     value="#{myBean.rows}" 
     selection="#{myBean.selectedRow}" 
     rowKey="#{row.activityId}"> 
    <p:column selectionMode="single"/> 
    ... 
</p:dataTable> 

p:selectOneMenurequired属性と同様のp:dataTableで必要な選択の検証を行う方法または回避策がありますか?

環境:Primefaces 5.3、JSF 2.2.8-14、Tomcat 7.0.68。そこDataTableのこの機能はありませんが、あなたのコードで遊ぶことができますprimefacesで私が知っている

答えて

1

私はあなたがいるかどうかを確認することができますので、あなたは、あなたのManagedBeanで同じイベントを行うことができますことを示唆しています

public void requiredSelect() { 
    if (myObject == null) { 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(
       FacesMessage.SEVERITY_ERROR, "Error", "My object is required!")); 
    } 
} 
+0

私はあなたがした後にテストを行うことを示唆していると思う:はい、その後、他のOKあなたは、行の選択がそのように要求されていることをユーザーにnotifie簡単なメッセージを作成することができた場合、行は、選択されたかされていません更新モデル値のフェーズこれは、提出物の中で行うのが容易である。 actionListenerを持つ 'p:commandButton'です。しかし、私は 'p:wizard'に入っていて、標準の検証だけを行う「次へ」ボタンがクリックされたときにそれを行う必要があります。それを行う方法はありますか? – Pixelstix

+0

ウィザードの[次へ]ボタンのイベントを変更しようとしましたが、この例を確認することができます:http://stackoverflow.com/questions/17995208/repositioning-nav-buttons-in-pwizardまたはこれも役立ちます:http: //www.journaldev.com/3415/primefaces-wizard-component-example-tutorial –

+0

これは私にいくつかの成功をもたらしますが、完全ではありません。不利な点は、 'flowListener'にメッセージを追加することは、他のすべての検証が成功した場合にのみエラーメッセージが表示されることです。これは、ユーザーが一連の検証エラーを受け取り、修正して送信し、 'dataTable'の追加のエラーメッセージを受け取った場合には、厄介な動作をします。 – Pixelstix

関連する問題