0

Web アプリケーションでJSFPrimefacesを使用しています。

p:datatable id="jobEditTable" プライムフェイスのコンポーネントを使用しています。

これには、いくつかの行を削除するオプションがあります。

データテーブルには、そのボタンをクリックすると削除ボタンが1つあり、 p:dialog id="deleteJob"が表示されます。次に、 p:dialog で削除するためのいくつかの理由を入力し、 p: dialogで1つのコマンドリンクをクリックして呼び出しますデータのリストをクリアして再度作成している1つのアクションリスナー。

そして、そのコマンド リンクの onClick は、jobEditTable を更新し、その p:dialog を非表示にしています。

    <p:datatable id="jobEditTable" value="#{mastersBean.dataList}"..../>
 . . .. . . .  . . .
    <p:commandLink  actionListener="#{tableBean.deleteRow}" update="jobEditTable"  oncomplete="deleteJob.hide()">
               <p:graphicImage value="/images/delete_button.png" />
                 <f:attribute name="model" value="#{tableBean.delCode}"></f:attribute>
                </p:commandLink>

すべてが正常に機能しており、データテーブルも更新されています。

しかし 、データテーブルよりも削除してそのプロセスを実行する前にいくつかのジョブを検索すると、更新されません。どうして??

つまり、フィルター手段を使用していない場合、データテーブルは更新されます。行を削除すると、データテーブルは更新されますが、検索後、データテーブルを削除しても更新されません..

なぜこのように振る舞うのですか??

ビュースコープ内の私のBean 。

これは、MastersBean という名前の私の ManagedBeanです。

  public void deleteDetails(ActionEvent e)
    {
        String id=(String)e.getComponent().getAttributes().get("param");
        ........deleting data from database according to id.........
            dataList.clear();

      ..........updating datalist again....................
        FacesContext context = FacesContext.getCurrentInstance();  

        context.addMessage(null, new FacesMessage("Successfully Deleted"));  

    }
4

3 に答える 3

2

データベースからアイテムを削除した後、選択したアイテムを配列リストから削除する必要があると思います: myArrayList.remove(selectedItem);、データベースからすべてのデータを再度リロードしないでください!! . 私はこの問題を抱えていましたが、今ではうまく機能しています。

于 2013-06-22T11:50:45.130 に答える
0

ajax 更新で dataTable の周りのフォームを更新してみてください。

<h:form id="form1">
....
    <p:datatable id="jobEditTable" ..../>
</h:form>

<p:commandLink ... update=":form1"...></p:commandLink>

結果は、バッキング Bean にキャッシュされた dataTable に表示されているものですか? バッキング Bean のソースを投稿できますか?

于 2012-10-07T19:50:07.340 に答える