2012-10-27 2 views
0

Я читал подобные вопросы по SA и форуму Primefaces, но это не помогло. Вот xhtml:confirmDialog появляется, но сразу исчезает

<h:form id="form2" prependId="false"> 
    <p:remoteCommand name="sendNameClicked" actionListener="#{reportBean.passName}"/> 
    <p:remoteCommand name="updateDialog" update=":form3:dialogBox"/> 

    <p:commandButton style="display: none" id="displayDialog" type="button" onclick="cd.show(); return false;"/> 
</h:form> 
<h:form id="form3"> 
    <p:confirmDialog id ="dialogBox" message= "#{reportBean.getClickedAuthorLaius()}" 
        header="#{reportBean.nameClicked}#{reportBean.authorClicked.mostRecentAffiliation}" 
        widgetVar="cd" 
        severity="info" 
        > 
     <h:outputText styleClass="ui-widget" value="" escape="false" /> 
     <p:commandButton value="Draw the ring of #{reportBean.obtainFullName()}?" actionListener ="#{controllerBean.prepareNewSearch()}" action ="index?faces-redirect=true" oncomplete="cd.hide();"/> 
     <p:commandButton value="No, stay on this page" onclick="cd.hide();" type="button" /> 
    </p:confirmDialog> 
</h:form> 

Любая помощь очень ценится!

ответ

2

onclick уволен перед отправкой заявки на форму. update выполняется после отправки ответа на форму. Таким образом, диалог подтверждения обновляется после его открытия и, таким образом, снова появляется внешний вид по умолчанию.

Вам необходимо его открыть после обновление. Используйте атрибут oncomplete вместо onclick.

<p:commandButton ... oncomplete="cd.show()"/> 
+0

commandButton запускается функцией javascript, которая выполняет: document.getElementById ('displayDialog'). Click(). Я адаптировал ваше предложение таким образом:

+0

ok Я открыл здесь новый вопрос: http://stackoverflow.com/questions/13101960/using-oncomplete-in-a-commandbutton-even-when-onclick-is-empty – seinecle

+0

О, я не обратил внимания на ' type = "button", я не ожидал этого здесь вообще. Убери это. Не уверен, что это решит ваше конкретное функциональное требование. В конце концов, скрытая и мертвая кнопка довольно странная. Интересно, почему вы не выполнили 'cd.show()' в самой функции updateDialog, поскольку это имеет в основном тот же эффект. Использование 'oncomplete'' '' само по себе будет иметь больше смысла на основе кода и информации, предоставленной до сих пор. – BalusC

Смежные вопросы