Я использую JSF, и у меня возникает следующая проблема:
У меня есть 2 командные кнопки:
<h:commandButton id="btn1" value="Button 1" action="#{bean.action1()}"
onclick="#{rich:component('confirmation')}.show();" />
<h:commandButton id="btn2" value="Button 2" action="#{bean.action2()}"
onclick="#{rich:component('confirmation')}.show();" />
Поэтому, когда они нажимаются, должно отображаться всплывающее окно (с id =«подтверждение»).
Вот всплывающее окно:
<rich:popupPanel id="confirmation" header="Note" modal="true"
width="525" height="180" resizable="false" headerClass="rf-p-hdr"
autosized="false">
<a4j:queue ignoreDupResponses="true" requestDelay="500" />
<f:facet name="controls">
<h:panelGroup>
<a4j:commandButton
image="#{resource['default:img/close_button.png']}"
styleClass="close_button" action="#{bean.cancel()}"
render="@all"
oncomplete="#{rich:component('confirmation')}.hide(); return false;"
status="ajaxProgress" />
</h:panelGroup>
</f:facet>
<s:div styleClass="help_embedded"
style="margin-bottom: 20px; margin-top: 20px;">
<h:outputText value="Here I want to display a message that tells the user which button was pressed." />
</s:div>
<s:div style="margin-left: 82px;">
<s:decorate template="/layout/field.xhtml">
<a4j:commandButton value="#{messages['allPages.button.save']}"
action="#{bean.save()}" execute="@this"
oncomplete="#{rich:component('confirmation')}.hide(); return false;"
render="@all"
status="ajaxProgress" />
<a4j:commandButton value="#{messages['allPages.button.cancel']}"
styleClass="cancel" action="#{bean.cancel()}"
execute="@this"
oncomplete="#{rich:component('confirmation')}.hide(); return false;"
render="@all"
status="ajaxProgress" />
</s:decorate>
</s:div>
</rich:popupPanel>
Моя проблема : если вы посмотрите на h: outputText внутри всплывающего окна - Я хочу, чтобы он отображал сообщение пользователю, в зависимости от того, какая кнопка была нажата (btn1 или btn2). Например, , если пользователь нажал btn1 , всплывающее сообщение будет - «Вы только что нажали кнопку 1. Вы уверены, что хотите выполнить это действие?» .И если пользователь нажал кнопку 2 , сообщение будет иметь следующий вид: «Вы только что нажали кнопку 2. Вы действительно хотите выполнить это действие?» .
Я пытался обновлять значение базового компонента при каждом нажатии кнопки, а затем повторно отображать всплывающее окно, но похоже, что тег всплывающего окна генерируется только один раз, когда страница загружается, и повторное отображение ничего не делает.
Мне также хотелось бы решение, в котором все динамические изменения в пользовательском интерфейсе происходят только во внешнем интерфейсе, не мешая серверу перегенерировать страницу - поэтому нажатие кнопки 1 приведет к изменению JavaScriptпеременная внешнего интерфейса и h: outputText во всплывающем окне будут читать это значение для отображения сообщения.
У вас есть идея, как этого достичь?