Web アプリケーションでJSFとPrimefacesを使用しています。
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"));
}