Скопируйте другую функциональность кнопок, выбрав ее через styleClass - PullRequest
1 голос
/ 27 мая 2011

Допустим, нажатие кнопки A на модальной панели выполняет действие A:

<a4j:commandLink styleClass="abc"
     immediate="true"
     action="actionA"
     oncomplete="#{rich:component('modalPanel')}.hide(); Event.stop(event); return false;">
</a4j:commandLink>

Теперь у меня есть еще одна кнопка, кнопка B, которая должна имитировать функциональность кнопки A. Вот код кнопки B:

<h:outputLink value="javascript:void(0)" class="btn-image close">
<span><h:outputText value="Close"></h:outputText></span>
<rich:componentControl for="#{(empty modalId) ? defaultModalId : modalId}" operation="hide" event="onclick"/>
</h:outputLink>

В атрибуте 'for' rich: componentControl могу ли я найти кнопку A и вызвать actionA?

Любая помощь будет оценена !!

1 Ответ

1 голос
/ 27 мая 2011

Кстати, вам нужно знать идентификатор сгенерированного элемента HTML <a> рассматриваемого компонента <a4j:commandLink>. Если он динамический / автоматически сгенерированный, вы бы хотели, чтобы JSF генерировал фиксированный идентификатор клиента, предоставив компоненту и родительским компонентам UINamingContainer (например, <h:form>) фиксированный идентификатор

<h:form id="myform">
    <a4j:commandLink id="mylink" ... />
    ...
</h:form>

В приведенном выше примере идентификатор станет myform:mylink. Чтобы вызвать событие click от JS, вы можете просто сделать

<h:outputLink onclick="document.getElementById('myform:mylink').click()">

Если вы используете RichFaces4, вы можете использовать #{rich:element()}, чтобы найти элемент по идентификатору на стороне сервера, чтобы вам не нужно было знать идентификатор формы

<h:outputLink onclick="#{rich:element('mylink')}.click()">
...