PrimeFaces 对话框不使用我在视图中提供的信息
PrimeFaces dialog doesn't use the information I provide in the view
我有一个包含以下字段的视图:
<p:selectOneMenu style="width:40px" value="#{capacityFamilyBean.capacityFamily.bottleneck}">
<f:selectItems value="#{capacityFamilyBean.availableCapFamilyBottlenecks()}"/>
</p:selectOneMenu>
<p:inputText id="capacityFamilyName" binding="#{capacityFamilyName}" style="margin-left:20px" value="#{capacityFamilyBean.capacityFamily.name}">
<p:ajax event="change" update="newBundleButton"/>
</p:inputText>
<p:commandButton id="newBundleButton" icon="ui-icon-plus" disabled="#{empty capacityFamilyName.value}" value="${msgs.New}" oncomplete="PF('capacityFamilyDialog').show();"/>
你可以看到值属性是{capacityFamilyBean.capacityFamily.prprty}
capacityFamilyDialog
使用相同的属性,但未预先填充
<p:selectOneMenu value="#{capacityFamilyBean.capacityFamily.bottleneck}">
<f:selectItems value="#{capacityFamilyBean.availableCapFamilyBottlenecks()}" />
</p:selectOneMenu>
<p:inputText id="capacityFamilyName" style="margin-left:20px" value="#{capacityFamilyBean.capacityFamily.name}"/>
我假设它们指的是不同的 capacityFamily 对象,但我该如何反驳呢?
对话框随页面一起提供。所以它完全是空的。
oncomplete="PF('capacityFamilyDialog').show();"
是纯粹的 javascript,只显示这个空的弹出窗口。如果您想使用实际值进行对话,则必须在 ajax 调用中 update
它,就像您的 commandButton
.
<p:commandButton value="${msgs.New}" update="capacityFamilyDialog_ID" oncomplete="PF('capacityFamilyDialog').show();"/>
当您单击按钮时,对话会起作用。我认为您应该更新对话框的 ID。
JSF 代码
<p:commandButton id="impBtb"
process="@this" icon="ui-icon-plus" disabled="#{empty capacityFamilyName.value}"
value="${msgs.New}" oncomplete="PF('capacityFamilyDialog').show();" update="@form:capacityFamilyDialog">
</p:commandButton>
因此,您可能需要从命令按钮执行 ajax 调用以更新对话框。
希望对您有所帮助!!
我有一个包含以下字段的视图:
<p:selectOneMenu style="width:40px" value="#{capacityFamilyBean.capacityFamily.bottleneck}">
<f:selectItems value="#{capacityFamilyBean.availableCapFamilyBottlenecks()}"/>
</p:selectOneMenu>
<p:inputText id="capacityFamilyName" binding="#{capacityFamilyName}" style="margin-left:20px" value="#{capacityFamilyBean.capacityFamily.name}">
<p:ajax event="change" update="newBundleButton"/>
</p:inputText>
<p:commandButton id="newBundleButton" icon="ui-icon-plus" disabled="#{empty capacityFamilyName.value}" value="${msgs.New}" oncomplete="PF('capacityFamilyDialog').show();"/>
你可以看到值属性是{capacityFamilyBean.capacityFamily.prprty}
capacityFamilyDialog
使用相同的属性,但未预先填充
<p:selectOneMenu value="#{capacityFamilyBean.capacityFamily.bottleneck}">
<f:selectItems value="#{capacityFamilyBean.availableCapFamilyBottlenecks()}" />
</p:selectOneMenu>
<p:inputText id="capacityFamilyName" style="margin-left:20px" value="#{capacityFamilyBean.capacityFamily.name}"/>
我假设它们指的是不同的 capacityFamily 对象,但我该如何反驳呢?
对话框随页面一起提供。所以它完全是空的。
oncomplete="PF('capacityFamilyDialog').show();"
是纯粹的 javascript,只显示这个空的弹出窗口。如果您想使用实际值进行对话,则必须在 ajax 调用中 update
它,就像您的 commandButton
.
<p:commandButton value="${msgs.New}" update="capacityFamilyDialog_ID" oncomplete="PF('capacityFamilyDialog').show();"/>
当您单击按钮时,对话会起作用。我认为您应该更新对话框的 ID。
JSF 代码
<p:commandButton id="impBtb"
process="@this" icon="ui-icon-plus" disabled="#{empty capacityFamilyName.value}"
value="${msgs.New}" oncomplete="PF('capacityFamilyDialog').show();" update="@form:capacityFamilyDialog">
</p:commandButton>
因此,您可能需要从命令按钮执行 ajax 调用以更新对话框。
希望对您有所帮助!!