繁体   English   中英

打开Primefaces对话框并处理完整的JSF生命周期

Open Primefaces dialog and Process Full JSF Lifecycle

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在做<p:commandLink value="#{bundle['registered.home.search.TEXT']}" onclick="webSearchDlg.show();"></p:commandLink>来显示在对话框下方。 p:outputPanel id =“ searchPnl”始终在其最初呈现后呈现。 即使执行对话框closeListener="#{dreamSearch.close}" onCloseUpdate="searchTxtPnl,searchPnl"它也不会消失。 当我在关闭对话框后打开对话框时,将显示panelGrid,并且<p:inputText id="searchText">显示我尝试在下面的closeListener方法中清除的先前值。 任何想法...下面的代码...

<p:dialog header="#{bundle['dreamSearch.HEADER']}"
    widgetVar="webSearchDlg" modal="true" styleClass="dialog dialog2"
    draggable="false" resizable="false" showEffect="fade"
    hideEffect="fade" closeListener="#{dreamSearch.close}" onCloseUpdate="searchTxtPnl,searchPnl">
    <div class="dialog-top-reg"></div>
    <div class="dialog-middle-reg">
        <div class="close-button">
            <h:form>
                <p:commandButton onclick="webSearchDlg.hide()" />
            </h:form>
        </div>
        <h:form class="dialog-content dialog-content2"
            binding="#{dreamSearch.dreamSearchFrm}">
            <h1 class="dream-search">
                <h:outputText value="#{bundle['dreamSearch.HEADER']}" />
            </h1>
            <p class="dream-search">
                <h:outputText value="#{bundle['dreamSearch.SUBHEADER']}" />
            </p>
            <div class="dream-search-wrap">
                <fieldset>
                <p:outputPanel id="searchTxtPnl">
                    <p:inputText id="searchText" value="#{dreamSearchBean.searchText}"/>
                </p:outputPanel>
                    <p:commandButton styleClass="form-btn1"
                        value="#{bundle['dreamSearch.search.button.TEXT']}" onclick="webImageSearch()"/>
                </fieldset>
            </div>
            <p:remoteCommand name="webImageSearch" process="searchText, @this" actionListener="#{dreamSearch.search}" update="searchPnl"/>
            <p:outputPanel id="searchPnl" styleClass="data-grid-wrap">
                <h:outputText value="#{bundle['dreamSearch.imageResults.TEXT']}" rendered="#{dreamSearchBean.shouldRender}"/>
                <p:dataGrid var="img" value="#{dreamSearchBean.images}" columns="5"
                    rows="10" paginator="true" effect="true"
                    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                    rowsPerPageTemplate="10,15,20" paginatorPosition="bottom" rendered="#{dreamSearchBean.shouldRender}">
                    <p:column>
                        <h:panelGrid columns="1" style="width:100%">
                            <p:graphicImage value="#{img}" width="40" height="50" />
                        </h:panelGrid>
                    </p:column>
                </p:dataGrid>
            </p:outputPanel>
        </h:form>
    </div>
    <div class="dialog-bottom-reg"></div>
</p:dialog>


@Named
@Scope("request")
public class DreamSearch extends BaseAction {
    @Inject
    DreamService dreamService;
    @Inject
    ImageSearchService flickrSearchImpl;
    @Inject
    private DreamSearchBean dreamSearchBean;
    private UIForm dreamSearchFrm;


    public void init(){
        if (!FacesUtils.isPostback()) {
            dreamSearchBean.setShouldRender(false);
            dreamSearchBean.setSearchText(null);
        }
    }

    public void setDreamSearchFrm(UIForm dreamSearchFrm) {
        this.dreamSearchFrm = dreamSearchFrm;
        init();
    }

    public void search(ActionEvent e){
        try {

            if(dreamSearchBean.getSearchText() != null && !dreamSearchBean.getSearchText().isEmpty()){
                List<String> searchResults = flickrSearchImpl.searchByKeyWord(dreamSearchBean.getSearchText());
                dreamSearchBean.setImages(searchResults);
                dreamSearchBean.setShouldRender(true);
            }else{
                dreamSearchBean.setShouldRender(false);
            }

        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }

    public void close(CloseEvent e){
        dreamSearchBean.setShouldRender(false);
        dreamSearchBean.setSearchText(null);
    }

    public UIForm getDreamSearchFrm() {
        return dreamSearchFrm;
    }
}

    @Named
@Scope("session")
public class DreamSearchBean extends BaseSessionBean {
    private List<String> images;
    private String searchText;
    private boolean shouldRender;



    public String getSearchText() {
        return searchText;
    }

    public void setSearchText(String searchText) {
        this.searchText = searchText;
    }

    public boolean isShouldRender() {
        return shouldRender;
    }

    public void setShouldRender(boolean shouldRender) {
        this.shouldRender = shouldRender;
    }

    public List<String> getImages() {
        return images;
    }

    public void setImages(List<String> images) {
        this.images = images;
    }

}
2 个回复

真的不知道此行为的原因是什么,但是您可以尝试以下操作:

对于<p:outputPanel id="searchPnl"> :尝试在面板上而不是在h:outputTextp:dataGrid上设置渲染标签。

对于searchText,请尝试更新<p:outputPanel id="searchTxtPnl">而不是h:inputText

我注意到您的bean的范围是请求。 如果您要进行ajax更新,则确实需要使用带有JSF @ManagedBean和@ViewScoped批注的ViewScoped bean。

另一件事:确保您不更新对话框所在的表单。这可能会产生不需要的结果。

1 Android生命周期演示如何制作对话框?

我正在查看android dev网站( http://developer.android.com/training/basics/activity-lifecycle/index.html )上提供的生命周期演示。 单击暂停按钮时会出现一个对话框,但是我无法弄清楚它在对话框中将对话活动变成对话 ...

4 如何解释M2E中的生命周期映射对话框?

在eclipse M2E 1.2.0插件中,当我进入maven项目属性时,有一个生命周期映射对话框,此对话框中各列的含义是什么。 我在网上搜索了解释,但没有找到任何清楚解释各栏目含义的内容。 每列的含义是什么? 为什么剂量配置器在Mapping中多次出现,例如在编译器中:co ...

7 Android,活动的生命周期使p.roblem从对话框中获取结果

在我的应用程序中,我使用onCreate()初始化应用程序onStart()和onResume()。 根据活动生命周期,所有上述方法都按顺序运行。 在onStart()方法中,我有一个自定义对话框,运行该对话框时,我将用户ID和密码发送给服务器,然后服务器向我发送一个令牌。 然后, ...

10 寻找无模式MFC对话框生命周期的状态转换图

我正在尝试修复或替换C ++ MFC应用程序中的一些遗留代码,该应用程序管理当前打开(或尚未打开)子无模式对话框的枚举图。 当前代码使得无效假设导致错误和崩溃。 我正在寻找状态转换图(来自微软或博客或文章),以便我可以确保我的替换代码正确处理所有可能的状态转换(打开,开始关闭,关闭取消等 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM