powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Имя java-script функции как параметр в композитном компоненте JSF
8 сообщений из 8, страница 1 из 1
Имя java-script функции как параметр в композитном компоненте JSF
    #39106706
arkk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Есть композитный компонет:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:composite="http://java.sun.com/jsf/composite"
      xmlns:c="http://java.sun.com/jsp/jstl/core">

    <composite:interface name="selectorComposite" displayName="Selector">
        <composite:attribute name="jsfunction"/>
    <composite:interface>
    <composite:implementation>
    <h:form id="formSelector">
        <rich:panel>
                <rich:dataGrid id="myDataGrid" iterationStatusVar="st" columns="1" style="width:100%;" 
                    elements="#{myManagedBean.rows}" var="c" value="#{myManagedBean.myItemsList}">
                    <rich:panel id="mySubPanel#{st.index}" style="width:100%;">
                        <f:facet name="header">
                            <h:outputText value="#{c.textField1} "/>
                        </f:facet>
                        <a4j:repeat value="#{c.subItemList}" var="flco">
                            <h:outputText rendered="#{myManagedBean.currentSubItem.id eq flco.id}" value="#{flco.textFiled}" style="color:red"/>
                            <a4j:commandLink actionListener="#{myManagedBean.selectCurrentSubItem}"  render="myDataGrid"
                                rendered="#{myManagedBean.currentSubItem.id ne flco.id}" execute="@this" oncomplete="#{cc.attrs.jsfunction}">
                                <h:outputText value="#{flco.textForReference}"/>
                            </a4j:commandLink>
                            <br/>
                        </a4j:repeat>
                    </rich:panel>
                </rich:dataGrid>
        </rich:panel>
    </h:form>
    </composite:implementation>
</html>



Он встраивается в несколько разных фейслетов и в частности в следующий:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:cu="http://java.sun.com/jsf/composite/mycomponents">
<h:head>
	
</h:head> 
<a4j:jsFunction name="myFunction" actionListener="#{myBean2.afterSelectItem1}" 
     action="#{myBean2.afterSelectItem2}" />
<h:body>
<!--left-->
<rich:panel style="width:320px;height:531px;float: left;">
    <cu:selectorComposite jsfunction="myFunction()"/>
</rich:panel>
<!--left-->
<!--center-->
<h:form>
	....
</h:form>
<!--center-->
</h:body>
</html>



Композитный компонент <cu:selectorComposite> стоит вертикальный дата грид с одним столбцом. В каждую клеточку записывается rich:panel которая содержит объект myItem.
У объекта myItem есть текстовое поле которое выводится в заголовок панельки и маленький список под-объектов subItem. Список под-объектов выводится в эту же панельку с помощью <a4j:repeat/>.
Каждый элемент этого списка - ссылка <a4j:commandLink/> при кликании пользователя на одну из этих ссылок происходит некие действия, и после того как действия выбора ссылки отработают, на событие oncomplete вызвается a4j:jsFunction. так как этот композитный компонет встраивается в разные фейслеты, то нужная a4j:jsFunction передается как параметр при встраивании композитного компонета.
Проблема заключается в том, что как параметр имя jsFunction не передается.
Если в элементе <a4j:commdndLink oncomplete="#{cc.attrs.jsfunction}" /> написать <a4j:commdndLink oncomplete="alert('Execute!')" /> то алерт выполняется.
В текущем варианте используется mojarra-2.2.12 + richfaces-4.5.10, самое интересное что в конфигурации mojarra-2.1.29 + richfaces-4.3.7 это успешно работало.

Подскажите как это можно перебороть.
...
Рейтинг: 0 / 0
Имя java-script функции как параметр в композитном компоненте JSF
    #39106805
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arkkКомпозитный компонент <cu:selectorComposite> стоит вертикальный дата грид с одним столбцом
готового грида там нету что-ли?
С одним столбцом выпадающим списком?
...
Рейтинг: 0 / 0
Имя java-script функции как параметр в композитном компоненте JSF
    #39106890
arkk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Выпадающий список там не был нужен, Нужно было показать вертикальный список объектов, в каждом объекте имеется список вложенных под-объектов. Вложенный под-объект представлен ссылкой <a4j:commandLink/>.
При клике на ссылку обрабатывается событие "oncomplete".

Компонент <a4j:commandLink oncomplete="" /> атрибут oncomplete вызывает javascript. Если имя javascript -функции передать как параметр композитного компонента, то имя функция не выполняется.... Имя не передается...
...
Рейтинг: 0 / 0
Имя java-script функции как параметр в композитном компоненте JSF
    #39106915
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arkkPetro123,
Выпадающий список там не был нужен, Нужно было показать вертикальный список объектов, в каждом объекте имеется список вложенных под-объектов. Вложенный под-объект представлен ссылкой <a4j:commandLink/>.
При клике на ссылку обрабатывается событие "oncomplete"
ну дай в сети скрин на этот визуальный объект.
У тебя ведь не нобелевская?
Т.к. "вложенный список в ячейке" по бабски говоря и есть "выпадающий список".
arkkЕсли имя javascript -функции передать как параметр композитного компонента, то имя функция не выполняется.... Имя не передается...
смотри в отладчике JS какой именно HTML текст в ячейке создал JSF
...
Рейтинг: 0 / 0
Имя java-script функции как параметр в композитном компоненте JSF
    #39106922
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типа
Код: html
1.
2.
<td class="data" headers="M01" style="">
   <span style="background:#C0C0C0; color:#C0C0C0;">0000</span></td>
...
Рейтинг: 0 / 0
Имя java-script функции как параметр в композитном компоненте JSF
    #39106944
arkk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Исходник выложенный выше упрощен, но в реальности объект имеет вид:
...
Рейтинг: 0 / 0
Имя java-script функции как параметр в композитном компоненте JSF
    #39106987
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arkkсамое интересное что в конфигурации mojarra-2.1.29 + richfaces-4.3.7 это успешно работало
ну что делать?
- смотреть реальный код HTML
- сравнить код в 2.1 и в 2.2
Это ведь не так сложно. Если код различен, то баг библиотеки.
Удачи!
...
Рейтинг: 0 / 0
Имя java-script функции как параметр в композитном компоненте JSF
    #39107836
arkk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В результате "танцев с бубнами" удалось добиться чтобы все заработало. Пришлось изуродовать, элемент <a4j:jsFunction name="myFunction" ... /> перенес внутрь композитного компонента в форму id="formSelector"
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Имя java-script функции как параметр в композитном компоненте JSF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]