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

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

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
27.10.2006, 16:31:34
    #34087688
maod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: динамическое создание компонент
Alexei Rublov
Но в принципе проще через jstl

c:forEach
c:choose
c:when

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

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

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

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

Могу привести примеры использования так сказать в боевых условиях.
...
Рейтинг: 0 / 0
30.10.2006, 12:49:41
    #34090803
maod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: динамическое создание компонент
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
30.10.2006, 16:57:56
    #34091956
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: динамическое создание компонент
В версиях 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
31.10.2006, 12:59:18
    #34093881
Alexei Rublov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: динамическое создание компонент
Например вот так:

<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
31.10.2006, 18:04:33
    #34095414
maod
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: динамическое создание компонент
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
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: динамическое создание компонент / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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