|
|
|
JSF: динамическое создание компонент
|
|||
|---|---|---|---|
|
#18+
Есть страница на которой комбобокс со списком заголовков. При выборе заголовка нужно под комбобоксом отобразить для редактирования определенный набор параметров (в виде компонент JSF), ввести туда значения, нажать на кнопку и запустить процесс. Так вот, как в JSF динамически создавать и выводить на экран компоненты? Если кто делал подскажите плиз (ссылка на пример вобще супер!). Я сейчас капаю JSTL тэги (<c:forEach>), пытаясь организовать цыкл, но что-то глухо. Может новые компоненты в бэкин бине добавлять, а может вобще никак :( Используется Tomcat+MyFaces ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2006, 18:11:00 |
|
||
|
JSF: динамическое создание компонент
|
|||
|---|---|---|---|
|
#18+
В принципе можно использовать следующую схему: В бине: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 15:36:15 |
|
||
|
JSF: динамическое создание компонент
|
|||
|---|---|---|---|
|
#18+
Alexei Rublov Но в принципе проще через jstl c:forEach c:choose c:when очень рекомендую http://www.java2s.com/Code/Java/CatalogJava.htm Насчет jstl: проблема в том, что переменные которые создаются в этих тэгах не доступны в тэгах JSF, ну и конечно же не согласуются с жизненным цыклом JSF. Я сейчас пробую оракловскую библиотеку adf-faces, там все эти тэги (имеется в виду те которые организуют цикл, условие и компоненты) в одном пространстве имен и обрабатываются синхронно. Пока еще не пробовал, читаю мануал. За ссылку отдельный респект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 16:31:34 |
|
||
|
JSF: динамическое создание компонент
|
|||
|---|---|---|---|
|
#18+
А что конкретно не работает? У меня в проектах используется MyFaces 1.1.3+jstl 1.1.2 и все замечательно работает. Могу привести примеры использования так сказать в боевых условиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 17:59:30 |
|
||
|
JSF: динамическое создание компонент
|
|||
|---|---|---|---|
|
#18+
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> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 12:49:41 |
|
||
|
JSF: динамическое создание компонент
|
|||
|---|---|---|---|
|
#18+
В версиях 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, хорошая вестч:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 16:57:56 |
|
||
|
JSF: динамическое создание компонент
|
|||
|---|---|---|---|
|
#18+
Например вот так: <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> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 12:59:18 |
|
||
|
JSF: динамическое создание компонент
|
|||
|---|---|---|---|
|
#18+
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)) ничего не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 18:04:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34090803&tid=2147650]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
177ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 455ms |

| 0 / 0 |
