当对话框不在任何选项卡内时,它们可以正常工作。但是我在选项卡内有一些页面,并且在这些页面中,如果我设置 modal="true" 和 @appendto="@body",我看不到在 bean 的对话框中完成的更改。但如果我设置 modal="false",则更改工作正常,只是我希望我的对话框是模态的。谁能建议该怎么做? 我有一个主页,其中定义了选项卡
<p:tabView dynamic="true" cache="false" id="tabView" style="margin-top:30px;">
<p:ajax event="tabChange"
listener="#{bean.onTabChange}"/>
<p:tab id="homeTab" title="Account">
<ui:include src="work/tab1.xhtml"/>
</p:tab>
<p:tab id="Tab1" title="Payments">
<ui:include src="work/tab2.xhtml"/>
</p:tab>
</p:tabView>
在 tabView、tab1.xhtml 中,我有一个对话框,其中包含输入文本、selectOneMenu 和要编辑的数据表。 每当我添加任何值或更改时,我都会看到更改的值没有保存在 bean 中。 我必须添加一个ajax事件更改侦听器并在bean中获取更改后的vaklue,如下所示
<p:selectOneMenu value="#{bean.name}" styleClass="menu" update= "@this" panelStyleClass="panel"
style="width:255px;background-color:#E5FBFF;color:#0E66EE;font-family:Verdana, Geneva, sans-serif;">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{bean.name}" />
<p:ajax event="change" partialSubmit="true" update= "@this" listener="#{bean.nameChangeListener}"/>
</p:selectOneMenu>
在bean中监听器如下,
public void nameChangeListener (AjaxBehaviorEvent event) {
Object val = ((UIInput)event.getSource()).getValue();
name = (String)val;
}
完成这一切之后,即使我将对话框设置为模式并添加appendTo =“@(body)”,我也可以看到更改并且可以保存它们
现在的问题是更改数据表。我只有一个需要更改的单元格中有一个下拉菜单,但我不知道如何知道更改了哪一行。因为我必须将整行保存在数据库中。请帮忙。
我还有另一个对话框,其中只有一个数据表,所有列都可以编辑。我想知道如何知道已进行更改的行
按照@melloware的建议,我可以通过将对话框以新形式移动到单独的xhtml文件中来解决它,如下所示。
<h:form id="pForm">
<p:dialog dynamic="true" header="Add" widgetVar="testDialog" resizable="false" showHeader="true" closable="true" width="58%" height="100%" modal="true">
<!-- ****************Dialog Content*************** -->
update=:mform:AddGrid <!-- ****This is on my main xhtml page**** -->
</p:dialog>
</h:form>
我必须将此文件包含在定义了所有选项卡视图的文件中。 见下文
<h:form id=mform>
<p:tabView dynamic="true" cache="false" id="tabView" style="margin-top:30px;">
<p:ajax event="tabChange"
listener="#{bean.onTabChange}"/>
<p:tab id="homeTab" title="Account">
<ui:include src="work/tab1.xhtml"/>
</p:tab>
<p:tab id="Tab1" title="Payments">
<ui:include src="work/tab2.xhtml"/>
</p:tab>
</p:tabView>
</h:form>
<ui:include src="dialogs.xhtml"/>