带有表单字段的 Primefaces 对话框
Prime faces dialog with fields in the form
我有一个简单创建的表单。我想要做的是在单击时显示带有名称的对话框(即:inputField
中的值)。我意识到对话发生在 commandButton
的动作之前,所以我试图弄清楚如何获得当时的价值:
<h:form id="myForm">
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade" id="confirmDialog">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close"/>
</p:confirmDialog>
<p:inputField id="field" value="#{myBean.myName}"/>
<p:commandButton value="Create" update=":myForm" actionListener="#{myBean.sayHi}">
<p:confirm header="Confirmation" message="Is your name actually #{myBean.myName}?" icon="ui-icon-alert" />
</p:commandButton>
</h:form>
现在对话框只显示一个空字符串。我们该怎么做?
有了 selectOneMenu
之类的东西,我可以只添加一个 AJAX 事件。我真的需要与输入字段类似的东西吗?
在确认之前提交值只是为了在 confirmDialog
中使用它是没有意义的,所以要走的路是使用 commandButton 的 onclick
事件来更改 message="Is your name actually #{myBean.myName}?"
使用 javascript.
检查这段代码,它工作正常:
<h:form id="myForm">
<p:growl id="msg" />
<p:inputText id="field" value="#{indexBacking.input}" widgetVar="fieldWv"/>
<p:commandButton id="cmd01" value="Create" onclick="showConfirm();"/>
<p:confirmDialog showEffect="fade" hideEffect="fade" id="confirmDialog" widgetVar="confirmDialogWv">
<f:facet name="message">
<div id="confirmMessage"></div>
</f:facet>
<p:commandButton value="Yes" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" actionListener="#{indexBacking.sayHi()}" update="@form"/>
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" onclick="PF('confirmDialogWv').hide();"/>
</p:confirmDialog>
<script type="text/javascript">
function showConfirm() {
PF('confirmDialogWv').show();
$('#confirmMessage').empty();
$('#confirmMessage').append("<p>Is your name actually [" + PF('fieldWv').jq.val() + "]?</p>");
}
</script>
</h:form>
请注意,我被迫放弃这种行为并使用 p:confirmDialog 作为标准对话框来执行此操作。
我有一个简单创建的表单。我想要做的是在单击时显示带有名称的对话框(即:inputField
中的值)。我意识到对话发生在 commandButton
的动作之前,所以我试图弄清楚如何获得当时的价值:
<h:form id="myForm">
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade" id="confirmDialog">
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close"/>
</p:confirmDialog>
<p:inputField id="field" value="#{myBean.myName}"/>
<p:commandButton value="Create" update=":myForm" actionListener="#{myBean.sayHi}">
<p:confirm header="Confirmation" message="Is your name actually #{myBean.myName}?" icon="ui-icon-alert" />
</p:commandButton>
</h:form>
现在对话框只显示一个空字符串。我们该怎么做?
有了 selectOneMenu
之类的东西,我可以只添加一个 AJAX 事件。我真的需要与输入字段类似的东西吗?
在确认之前提交值只是为了在 confirmDialog
中使用它是没有意义的,所以要走的路是使用 commandButton 的 onclick
事件来更改 message="Is your name actually #{myBean.myName}?"
使用 javascript.
检查这段代码,它工作正常:
<h:form id="myForm">
<p:growl id="msg" />
<p:inputText id="field" value="#{indexBacking.input}" widgetVar="fieldWv"/>
<p:commandButton id="cmd01" value="Create" onclick="showConfirm();"/>
<p:confirmDialog showEffect="fade" hideEffect="fade" id="confirmDialog" widgetVar="confirmDialogWv">
<f:facet name="message">
<div id="confirmMessage"></div>
</f:facet>
<p:commandButton value="Yes" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" actionListener="#{indexBacking.sayHi()}" update="@form"/>
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" onclick="PF('confirmDialogWv').hide();"/>
</p:confirmDialog>
<script type="text/javascript">
function showConfirm() {
PF('confirmDialogWv').show();
$('#confirmMessage').empty();
$('#confirmMessage').append("<p>Is your name actually [" + PF('fieldWv').jq.val() + "]?</p>");
}
</script>
</h:form>
请注意,我被迫放弃这种行为并使用 p:confirmDialog 作为标准对话框来执行此操作。