gpt4 book ai didi

jsf-2 - Primefaces 对话框 + 命令按钮

转载 作者:行者123 更新时间:2023-12-03 18:39:43 25 4
gpt4 key购买 nike

我正在尝试使用素面 <p:dialog>结合 <p:commandButton> .在我的 .xhtml 页面中,我有一个用于显示对话框的选项列表和命令按钮。对话框显示带有来自选择列表的目标值的数据表。对话框有两个按钮:取消和提交。我的问题是提交按钮没有被触发。奇怪的是,对话框中的 commandButton 起作用了。

这是我的 .xhtml:

<body>
<ui:composition template="./../resources/mainTemplate.xhtml">
<ui:define name="content">
<h:form>
<p:dialog id="dlg" header="#{messages.chooseSkillLevel}" widgetVar="dlg" modal="true" dynamic="true">
<h:dataTable value="#{editSkills.skillsAndLevels}" var="skillslevel">
<h:column>
#{skillslevel.skill.umiejetnosc}
</h:column>
<h:column>
<p:selectOneMenu value="#{skillslevel.level}" >
<f:selectItems value="#{editSkills.levels}" var="level" itemLabel="#{level.stopien}" itemValue="#{level.id}" />
</p:selectOneMenu>
</h:column>
</h:dataTable>
<p:commandButton value="#{messages.confirm}" action="#{editSkills.showSkillsAndLevels}" oncomplete="dlg.hide();" /> THIS BUTTON IS NOT FIRED
<p:commandButton value="#{messages.cancel}" onclick="dlg.hide()"/>
</p:dialog>
<p:pickList value="#{editSkills.skills}" var="skill" effect="none"
itemValue="#{skill.id}" itemLabel="#{skill.umiejetnosc}"
showSourceFilter="true" showTargetFilter="true" filterMatchMode="contains"
addLabel="#{messages.add}" removeLabel="#{messages.remove}" removeAllLabel="#{messages.removeAll}" >
<f:facet name="sourceCaption">#{messages.skillsList}</f:facet>
<f:facet name="targetCaption">#{messages.yourSkills}</f:facet>
<p:ajax event="transfer" listener="#{editSkills.onTransfer}" />
<p:column style="width:100%;">
#{skill.umiejetnosc}
</p:column>
</p:pickList>
<p:commandButton value="#{messages.confirm}" action="#{editSkills.afterSubmit}" update="dlg" oncomplete="dlg.show()" /> THIS BUTTON WORKS FINE
<p:commandButton value="#{messages.cancel}" action="profile" immediate="true"/>
</h:form>
</ui:define>
</ui:composition>
</body>

我已经标记了工作按钮而不是工作按钮。
我该怎么做才能让它工作?

最佳答案

您可以尝试以下任一方法,我投票第一,这是 IMO 的更清洁设计

  • 带上 <p:dialog/>外一般<h:form/>并放一个 <h:form/>而是在里面
      <p:dialog id="dlg" header="#{messages.chooseSkillLevel}" widgetVar="dlg" modal="true" dynamic="true">
    <h:form>
    <h:dataTable value="#{editSkills.skillsAndLevels}" var="skillslevel">
    <h:column>
    #{skillslevel.skill.umiejetnosc}
    </h:column>
    <h:column>
    <p:selectOneMenu value="#{skillslevel.level}" >
    <f:selectItems value="#{editSkills.levels}" var="level" itemLabel="#{level.stopien}" itemValue="#{level.id}" />
    </p:selectOneMenu>
    </h:column>
    </h:dataTable>
    <p:commandButton value="#{messages.confirm}" action="#{editSkills.showSkillsAndLevels}" oncomplete="dlg.hide();" /> THIS BUTTON IS NOT FIRED
    <p:commandButton value="#{messages.cancel}" onclick="dlg.hide()"/>
    </h:form>
    </p:dialog>
  • 添加 appendToBody="false"<p:dialog/>确保对话框在 DOM 中的 html 表单中呈现,而不是自动重定位到 HTML 正文的末尾。但这可能会导致在各种浏览器中呈现不一致。
  • 关于jsf-2 - Primefaces 对话框 + 命令按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381602/

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