我有一个书籍列表List<Book>
,我从我的数据库中检索。
想象一下,Book类看起来像这样:
public class Book {
private String title;
private int pages;
// CONSTRUCTORS
public Book() {
}
public Book(String title, int pages) {
this.title = title;
this.pages = pages;
}
// GETTERS & SETTERS
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
}
在我的服务bookService
中,我编写了一个循环列表
List<Book> bookList;
我检查页数是否有数字,或者是&#34; 0&#34;零。如果值为&#34; 0&#34;零,我想显示一个表单/对话框,要求用户定义页数。
因此我在XHTML中构建了一个表单,如下所示:
<h:form id="BookPagesPromptForm">
<p:dialog header="Define number of pages"
widgetVar="BookPagesPromptDialogWidget" dynamic="true" modal="true"
resizable="false" width="300px" height="150px" position="center,top"
showHeader="true">
<div>Title : #{bookService.getTitle()}</div><br />
<div>Pages <p:inputText value="#{bookService.newPagesValue}" /></div><br />
<div><p:commandButton id="savePagesCommandButton" value="Save Pages Value" onclick="#{bookService.closeBookPagesForm()}" /></div>
</p:dialog>
</h:form>
在我的服务中,我使用以下方法来遍历我的booList:
public class BookService {
// ...
// ... Code ...
// ...
private List<Book> bookList;
private IBookDAO bookDao;
// ...
// ... More Code ...
// ...
public void updateRecordsWithZeroPages() {
for (Book bk : bookList) {
if (bk.getPages() == 0) {
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('BookPagesPromptDialogWidget').show();");
// Here I need to wait for user's input and as soon as the user
// clicks
// the "savePagesCommandButton" I want to update the record in
// my
// database.
bookDao.update(bk);
}
}
}
public void closeBookPagesForm() {
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('BookPagesPromptDialogWidget').hide();");
}
}
在我的流book-flow.xml
中,我定义了我的服务(部分代码):
<view-state id="bookList">
<var name="bookService" class="com.stavros.BookService" />
</view-state>
问题在于,在我的循环中,当它在第一个记录中时,它不会停止&#34; 0&#34;零页面,但它遍历所有记录并仅在循环结束时停止。结果,表单出现并向用户询问循环中的最后一个值。
如果你知道怎么做&#34;暂停&#34;在循环中并且仅当用户单击&#34; savePagesCommandButton&#34;时才继续循环。在用户界面上,请告诉我。