現在、私はseamプロジェクトに取り掛かり、問題があります。シームアクションメソッドは2回実行されますか?
新しいページ(MyPage.xhtmlというxhtml)を作成しました。 XHTMLで 私のコードは、コマンドボタンとAAを見つけることができます。リピータは私のデータを表示するには:私のアクションで
<!-- input fields that are filters for my table shown below -->
<h:commandButton value="View details" action="/MyPage.xhtml"/>
<rich:panel rendered=#{myAction.showDetails}>
<a:repeat value="#{myAction.findRecords()}" var="record">
<!-- Some of my code to display a table, nothing fancy -->
</a:repeat>
</rich:panel>
を私はこれを持っている:
@DataModel
private List<MyEntity> records = new ArrayList<MyEntity>();
public List<MyEntity> findRecords() {
//Do some query
Query query = entityManager.createNamedQuery("myEntityQuery");
records = query.getResultList();
return records;
}
これは、ページがどのように働くかある:
- 私のshowDetailsブール値がfalseであるため、入力ボックスとコマンドボタンが表示され、リッチ:パネルは表示されません。
- showDetailsブール値をtrueに設定するとパネルが表示され、反復処理では自分のアクションメソッドfindRecords()が呼び出されます。ここまでは順調ですね!
- しかし、もう一度自分のアクションボタンをクリックすると、アクションメソッドfindRecords()が2回実行されます。そして、ここに私の問題があります...
なぜ2回実行する必要がありますか?どうすれば一度に制限できますか?今、私たちは多くのパフォーマンスを必要とします。
クリプトン、
ディルク