gpt4 book ai didi

jsf - 从 PrimeFaces Dialog Framework 的对话框更新父窗口中的组件

转载 作者:行者123 更新时间:2023-12-04 23:18:36 25 4
gpt4 key购买 nike

我正在使用 PF 对话框框架打开一个对话框。

public void addSpecFeatures(){
genericFeatures = new GenericFeatures();
Map<String,Object> options = new HashMap<String, Object>();
options.put("resizable", false);
options.put("draggable", false);
options.put("modal", true);
options.put("widgetVar", "featureDialog");
RequestContext.getCurrentInstance().openDialog("PAGEName", options, null);
}

在对话框中,我想更新父页面中的组件。所以,我尝试了下面的代码
public void addFeatures(){
if (null != genericFeatures && null != genericFeatures.getName()) {
if (!genericFeaturesList.contains(genericFeatures)) {
genericFeaturesList.add(genericFeatures);
RequestContext context = RequestContext.getCurrentInstance();
context.update("contentform:tabView:featureTable");
context.closeDialog("PAGEName");
}
}
}

但是代码抛出以下异常:

Caused by: javax.faces.el.EvaluationException: org.primefaces.expression.ComponentNotFoundException: Cannot find component for expression "contentform:tabView:featureTable" referenced from "j_id1".



在父窗口中,我可以使用以下代码更新消息
<p:commandLink id="create" update=":contentform:tabView:message" />

如果我们使用PF Dialog Framework并通过Java代码打开它,是否意味着与打开器窗口没有父子关系?

最佳答案

使用 PrimeFaces 对话框框架,对话框在 HTML 中作为单独的 View 加载 <iframe> .

换句话说,对话框有自己的 JSF 组件树以及独立于打开对话框的页面的自己的 HTML DOM 树。这对于幂等、可添加书签和可导航的对话框特别有用。

但是,您的对话框似乎不是这样的。它似乎仍然对其开场白感兴趣,并在收盘时依赖它。解决方案相对简单:只是不要让对话框对其开启器感兴趣。让开启者本身对对话框关闭事件感兴趣,该事件可作为 dialogReturn 使用。事件在 <p:ajax>嵌套在对话框开启器按钮中。另见 Dialog Framework - Data showcase .

<h:form>
...
<p:commandButton ... action="#{bean.showDialog}">
<p:ajax event="dialogReturn" update=":foo:bar" />
</p:commandButton>
</h:form>

另一种方法是使用普通的 <p:dialog>而不是 PF 对话框架。
<h:form>
...
<p:commandButton ... oncomplete="PF('dialog').show()" />
</h:form>
<p:dialog widgetVar="dialog">
<h:form>
...
<p:commandButton ... update=":foo:bar" oncomplete="PF('dialog').hide()" />
</h:form>
</p:dialog>

关于jsf - 从 PrimeFaces Dialog Framework 的对话框更新父窗口中的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com