我目前正在做一个接缝项目并且有一个问题。
我刚刚创建了一个新页面(一个名为 MyPage.xhtml 的 xhtml)。在 xhtml 我的代码中,您可以找到一个命令按钮和 aa:repeater 来显示我的数据:
<!-- 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 布尔值是错误的。
- 当 showDetails 布尔值设置为 true 时,将显示面板并且迭代调用我的操作方法 findRecords()。到目前为止,一切都很好!
- 但是当我再次单击我的操作按钮时,操作方法 findRecords() 会执行两次。这是我的问题...
为什么要执行两次?我怎样才能将其限制为一次?现在它花费了我们很多性能..!
氪,
短剑