Próbuję użyć wartości podstawowych <p:dialog>
w połączeniu z <p:commandButton>
. Na mojej stronie .xhtml mam listę wyboru i commandButton, która służy do wyświetlania okna dialogowego. Wyświetlane okna dialogowe z wartościami docelowymi z listy wyboru. Okno dialogowe ma dwa przyciski: anuluj i prześlij. Mój problem polega na tym, że przycisk przesyłania nie jest uruchamiany. Co dziwne, działa commandButton z okna dialogowego.Okno dialogowe Primefaces + commandButton
Oto mój .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>
Zaznaczyłem przycisk działa i nie działa jeden. Co muszę zrobić, aby działało?
Czy patrzyłeś na konsolę, jej nie wywołuje ajax? czy po prostu nie działa? Spróbuj zajrzeć do firebuga, jeśli jego wysyłanie danych do serwera, czy też wypalanie AJAX i metoda '# {editSkills.showSkillsAndLevels}' nie jest w ogóle wywoływana? Sprawdź również, czy firebug nie wykazuje błędów JS. – Mindwin
@Mindwin wydaje się, że w ogóle nie jest wzywany. Nie widzę też żadnych błędów JS. – AjMeen