我正在做<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;
    }

}

#1楼 票数:1 已采纳

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

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

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

#2楼 票数:0

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

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

  ask by c12 translate from so

未解决问题?本站智能推荐:

1回复

在Primefaces错误上打开对话框

尝试在Primefaces上打开对话框时出现错误,我不明白为什么会这样。 这是我的页面代码: 在谷歌浏览器Javascript控制台上,我看到以下内容:
2回复

Primefaces对话框框架:对话框未打开

我使用对话框框架在单击命令链接时打开一个新的xhtml页面。 问题是打开对话框的代码已执行,但是什么也没发生。 我的XHTML代码可以调用新对话框。 BookingController.java中调用的方法 webapp根文件夹下的test.xhtml faces-config
1回复

使用JSF的Facebook聊天系统(PrimeFaces模态对话框)

是否可以使用JSF(Primefaces模态弹出窗口)构建类似Facebook的聊天系统。 我设法使用primefaces构建了一个模式对话框。 我想知道是否可以使用质数来添加多个模式对话框。
2回复

JSF:动态包含页面到primefaces对话框

我想用ui:include包含来自另一个页面的primefaces对话框的内容。 必须根据用户单击的按钮将包含的页面设置为动态。 我使用了来自BalusC的非常有用的答案来自JSF动态包括使用Ajax请求 。 它在例子中非常精细。 但是如果我使用ap:dialog而不是h:panelG
1回复

JSF2.0无法从primefaces渲染对话框

最近我对primefaces组件有很多问题,我知道为什么。 我使用glassfishV3.0,我的primefaces版本是2.2.1我现在的问题是,当我点击一个表格行时,我不能使p:的primefaces对话框呈现。 我完全像在他们的例子中所做的那样做almos: http : //www
1回复

为什么此对话框没有弹出?(JSF2.0+PRIMEFACES)

当我单击表格行时,我想弹出一个对话框,但它不起作用。(primefaces组件p:dataTable和p:dialog)而且看起来selectioMode无法正常工作。 为什么会这样呢? JSF页面: 这里是托管bean: 还要注意,在输出中我可以看到值,但是当我单击一行时它会变色
1回复

JSF重定向到另一个页面并打开对话框

我现在正努力进行重定向。 我想使用h:commandButton / p:commandButton从一页重定向到另一页。 那行得通,但我需要在该请求中传递参数/参数。 然后在重新加载新页面后立即使用该参数。 第一页: 并且有一个commandButton应该从page1重定向到p
1回复

JSF2.0Primefaces关闭复合组件中的对话框

我想在对话框中显示复合组件。 它工作但是如何从复合组件关闭该对话框。 在我的复合组件中: 单击“保存”时,我希望能够保存数据并关闭对话框。 单击取消时,我只想关闭对话框而不保存。 saveDatatypeAssertion和closeDatatypeAssertion方法都是占位符