Primefaces dialog + commandButton
Ich versuche, primefaces <p:dialog>
kombiniert mit <p:commandButton>
. In meiner .xhtml-Seite habe ich eine Auswahlliste und Befehlsschaltfläche, die verwendet wird, um einen dialog anzeigen. Der Auswahldialog zeigt eine Datentabelle mit soll-Werte aus der Auswahlliste. Dialog hat zwei Schaltflächen: Abbrechen und abschicken. Mein problem ist, dass der submit-button nicht ausgelöst. Was ist seltsam, commandButton aus der dialog funktioniert.
Hier ist meine .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>
Habe ich markiert working-Taste und funktioniert nicht.
Was muss ich tun damit es funktioniert?
Haben Sie schaute auf die Konsole, es ist nicht macht einen ajax-call? oder ist es einfach nicht funktioniert? Versuchen Sie suchen in firebug wenn Ihr die übertragung der Daten zum server, oder ist die AJAX abfeuern und die Methode
es scheint, dass es nicht aufgerufen wird, auf allen. Sehe keine JS Fehler zu.
#{editSkills.showSkillsAndLevels}
ist nicht genannt? Prüfen Sie auch, ob firebug zeigt nicht irgendwelche JS Fehler.es scheint, dass es nicht aufgerufen wird, auf allen. Sehe keine JS Fehler zu.
InformationsquelleAutor AjMeen | 2013-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, eine der folgenden ich Stimme Nummer eins, es ist ein sauberer design IMO
Bringen die
<p:dialog/>
außerhalb der Allgemeinen<h:form/>
und ein<h:form/>
innen es stattHinzufügen
appendToBody="false"
zu den<p:dialog/>
zu gewährleisten, den dialog gerendert wird in html-form im DOM statt auto-verlegt auf Ende des HTML-body. Aber dies kann zu inkonsistenten Darstellung in verschiedenen Browsern./user/editSkills.xhtml @39,121 itemValue="#{skill.id}": The class 'java.lang.String' does not have the property 'id'.
Was ist seltsam, ich denke, es ist verbunden mit Pickliste und es ist seltsam, verursachen Auswahlliste funktioniert einwandfrei. Was soll ich tun?das ist ein anderes Thema, insgesamt,wahrscheinlich verursacht durch die Tatsache, dass
#{skill.id}
und#{skillslevel.level}
sind nicht die gleichen Datentyps(einer von Ihnen ist ein string, das andere ist etwas anderes). Aber jetzt commandButton ist definitiv feuern.#{skillslevel.level}
nichts zu tun hat mit diesem Fehler, Ursache, auch wenn ich entfernenskilsslevel
Teil der Fehler immer noch auftaucht. Ich wahrscheinlich nur ein Konverter nötig. Trotzdem danke für die Hilfe!Du bist herzlich willkommen. Sollten Sie nur ein Konverter nötig, wenn
itemValue
ist ein POJO/complex type. Look at Antwort. Die Frage nicht direkt korreliert zu verkaufenich habe das gleiche problem, versuchte dies aber hat nicht funktioniert: stackoverflow.com/questions/31350850/...
InformationsquelleAutor kolossus
Stellen Sie sicher, dass Sie ', wenn u der Anruf der widgetVar Namen. Sie können auch die sofortige="true" oder process="@this".
InformationsquelleAutor Juan Castillo