в нашем проекте у нас много модальных панелей, чтобы пользователь знал, что он собирается делать.все эти панели выглядят одинаково, всего две кнопки («ОК» и «Отмена»).
Единственным отличием является действие, которое выполняет кнопка «ОК».
Теперь моя идея - создать универсальный модпанель, которую я просто вызываю и передаю действие, которое работает нормально, пока мне не нужно передать параметры в метод действия.
Я использую это как кнопку OK:
<a:commandButton
id="okGenericPanel"
action="#{actionBean[action]}"
value="#{messages['wizard.button.ok.label']}"
oncomplete="#{oncomplete}">
</a:commandButton>
, котораяработает нормально.Вызов этого выглядит следующим образом:
<a:commandLink id="testLink"
value="#{messages['home.test']}" ajaxSingle="true">
<rich:componentControl for="genericPanel"
attachTo="testLink" operation="show" event="onclick" />
</a:commandLink>
<ui:include src="/components/genericModalPanel.xhtml">
<ui:param name="actionBean" value="#{adminHomeAction}"/>
<ui:param name="action" value="sayHello"/>
<ui:param name="oncomplete" value="alert('im done');" />
</ui:include>
Я уже пытался передать параметр direclty в параметр ui: param следующим образом:
<ui:param name="action" value="sayHello('hello')"/>
или в фактическом вызове:
action="#{actionBean[action]('hello')}"
но ни одна из них не работает.
Есть ли другой способ сделать это?Или можно только так вызывать методы без каких-либо параметров?
Большое спасибо за любую помощь, Мартин