【问题标题】:Primefaces dialog doesn't show upPrimefaces 对话框不显示
【发布时间】:2013-01-18 21:37:07
【问题描述】:

我希望在单击commandButton 后显示dialog,但它根本不显示。 我认为该按钮正在提交表单而不是显示对话框。更重要的是,我尝试创建一个'Cancel' commandButton,但它也无法正常工作 - 只有我先点击它才能工作(如果我点击 commandButton 应该首先打开一个 dialog,取消按钮将不再起作用)。

这是我的 .xhtml:

<ui:define name="content">
     <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();" />
         <p:commandButton value="#{messages.cancel}" onclick="dlg.hide()"/>
       </h:form>
     </p:dialog>
     <h:form>
        <p:messages/>
          <p:pickList value="#{editSkills.skills}" var="skill" effect="none"  converter="#{picklistConverter}"
                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}" actionListener="#{editSkills.afterSubmit}" update=":dlg" oncomplete="dlg.show();" />  THIS IS THE MENTIONED BUTTON  
          <p:commandButton value="#{messages.cancel}" action="profile" immediate="true"/>  THIS IS THE CANCEL BUTTON
     </h:form>
</ui:define>

我应该怎么做才能让它正常工作?

【问题讨论】:

  • 你为什么是re-posting
  • @Fallup,不是转发。两个 Q 有不同的关注点
  • @kolossus 他们没有什么不同,他们之间的联系非常紧密。第一个解决方案导致了这个问题,即它破坏了正常工作。顺便说一句,当他现在根本无法打开对话框时,我不知道 OP 如何判断关于对话框内按钮的第一个解决方案工作正常。如果他无法验证它是否有效,他不应该接受它。
  • @Fallup 代码相同并不意味着问题也相同。上一个问题是关于根本没有触发的 commandButton 。这个问题是关于对话的。这可能很奇怪,但是当未提交选项列表时,对话框会更早出现。现在一切正常!
  • @AjMeen 我不是这么说的,因为代码是一样的。我之所以这么说是因为首先您遇到了按钮无法正常工作的问题 IN 对话框。接受解决方案后,您对实际打开对话框本身的对话框的按钮 OUTSIDE 有问题。当您无法打开对话框时,您如何验证第一个解决方案?我真的很困惑

标签: jsf-2 dialog primefaces commandbutton


【解决方案1】:

您的代码对我来说似乎很好:)。但是,您需要注意的一件事是&lt;p:dialog&gt;idwidgetVar 属性不能具有相同的值。尝试以下方法:

<p:dialog id="levelDlg" widgetVar="levelDialog">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2013-06-28
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多