如何暂停Java" for"循环以期望" p:commandbutton"触发click事件以继续循环?

时间:2016-05-03 08:26:42

标签: jsf primefaces spring-webflow

我有一个书籍列表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;时才继续循环。在用户界面上,请告诉我。

0 个答案:

没有答案