powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: динамическое создание компонент
8 сообщений из 8, страница 1 из 1
JSF: динамическое создание компонент
    #34084866
maod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть страница на которой комбобокс со списком заголовков. При выборе заголовка нужно под комбобоксом отобразить для редактирования определенный набор параметров (в виде компонент JSF), ввести туда значения, нажать на кнопку и запустить процесс.
Так вот, как в JSF динамически создавать и выводить на экран компоненты? Если кто делал подскажите плиз (ссылка на пример вобще супер!).
Я сейчас капаю JSTL тэги (<c:forEach>), пытаясь организовать цыкл, но что-то глухо. Может новые компоненты в бэкин бине добавлять, а может вобще никак :(

Используется Tomcat+MyFaces
...
Рейтинг: 0 / 0
JSF: динамическое создание компонент
    #34087464
Alexei Rublov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе можно использовать следующую схему:
В бине:

HtmlOutputText test = new HtmlOutputText();
test.setBlaBlaBla
......................

FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot uIViewRoot = facesContext.getViewRoot();
Application application = facesContext.getApplication(); uIViewRoot.findComponent("testform").getChildren().add(test);

а в page сделать пустой (или не пустой) компонент (форму div ...) с id testform

Но в принципе проще через jstl

c:forEach
c:choose
c:when

очень рекомендую
http://www.java2s.com/Code/Java/CatalogJava.htm
...
Рейтинг: 0 / 0
JSF: динамическое создание компонент
    #34087688
maod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexei Rublov
Но в принципе проще через jstl

c:forEach
c:choose
c:when

очень рекомендую
http://www.java2s.com/Code/Java/CatalogJava.htm

Насчет jstl: проблема в том, что переменные которые создаются в этих тэгах не доступны в тэгах JSF, ну и конечно же не согласуются с жизненным цыклом JSF.

Я сейчас пробую оракловскую библиотеку adf-faces, там все эти тэги (имеется в виду те которые организуют цикл, условие и компоненты) в одном пространстве имен и обрабатываются синхронно. Пока еще не пробовал, читаю мануал.

За ссылку отдельный респект
...
Рейтинг: 0 / 0
JSF: динамическое создание компонент
    #34087949
Alexei Rublov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что конкретно не работает?
У меня в проектах используется MyFaces 1.1.3+jstl 1.1.2
и все замечательно работает.

Могу привести примеры использования так сказать в боевых условиях.
...
Рейтинг: 0 / 0
JSF: динамическое создание компонент
    #34090803
maod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexei RublovА что конкретно не работает?
У меня в проектах используется MyFaces 1.1.3+jstl 1.1.2
и все замечательно работает.

Могу привести примеры использования так сказать в боевых условиях.

Например:

<c:forEach var="num" begin="0" end="${sessionScope.procBean.count}">
<!-- Вот здесь нужно вывести некоторое значение, причем для его определения
нужно использовать переменную цикла, например: -->
<h:outputText value="#{procBean.paramValue[???]}">
</c:forEach>

а вобще в бэкин бине хранится массив объектов и хотелось бы в цикле (по этому массиву) в зависимости от типа текущего(а как определить какой текущий???) объекта выводить определенные компоненты JSF.

Если эта проблема решена, то небольшой пример иллюстрирующий идею было бы не плохо.

ПС:
На adf-faces (оракловская библиотека) делается без проблем:
<af:iterator var="proc" varStatus="stat" first="0" rows="3" value="#{procBean.procList}">
<af:outputText value="#{procBean.procValue[stat.index]} o"/>
</af:iterator>
...
Рейтинг: 0 / 0
JSF: динамическое создание компонент
    #34091956
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В версиях JSF 1.1 и ниже, JSTL теги forEach, if, choose и when не работали. В JSF 1.2 эту проблему решили.
http://java.sun.com/developer/technicalArticles/J2EE/jsf_12/
http://wiki.java.net/bin/view/Projects/JavaServerFacesSpecFaq#11coreTags

Cам пользуюсь ADF Faces, хорошая вестч:)
...
Рейтинг: 0 / 0
JSF: динамическое создание компонент
    #34093881
Alexei Rublov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например вот так:

<c:forEach var="item" varStatus="iter" items="${testBean.links}">
<table width="100%" border="0">
<tr>
<td width="2%"><c:out value="${iter.count}"/></td>
<td width="8%"><c:out value="${item.type.name}"/></td>
<td width="74%"><c:out value="${item.url}"/></td>
</tr>
</table>
</c:forEach>
...
Рейтинг: 0 / 0
JSF: динамическое создание компонент
    #34095414
maod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexei RublovНапример вот так:

<c:forEach var="item" varStatus="iter" items="${testBean.links}">
<table width="100%" border="0">
<tr>
<td width="2%"><c:out value="${iter.count}"/></td>
<td width="8%"><c:out value="${item.type.name}"/></td>
<td width="74%"><c:out value="${item.url}"/></td>
</tr>
</table>
</c:forEach>

Не подойдет. Нужно в цикле использовать тэги JSF. Т.е.

<c:forEach var="item" varStatus="iter" items="${testBean.links}">
<table width="100%" border="0">
<tr>
<td width="2%">< h:outputText value="#{iter.count}"/></td>
<td width="8%">< h:outputText value="#{item.type.name}"/></td>
<td width="74%">< h:outputText value="#{item.url}"/></td>
</tr>
</table>
</c:forEach>

Причем вместо h:outputText может быть любой другой компонент, в зависимости от условий.
В принципе я остановился на ADF Faces, там это проблема решена. Но появилась еще. Можно ли записать значение в индексированное свойство. Т.е.

<af:inputText label="#{procBean.params[stat.index].label}" value="#{procBean.value[stat.index]}" />

Считывание значения (вызов getValue(int index)) происходит нормально, а при записи (setValue(int index, String value)) ничего не происходит.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: динамическое создание компонент
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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