Разбор JSTL XML внутри JSF - PullRequest
       9

Разбор JSTL XML внутри JSF

1 голос
/ 08 октября 2010

Я работаю над проектом, который мне нужен для динамического создания формы.Пользователь выбирает компонент, который он хочет поместить на экран, и программа добавляет его в форму.Для этого я использую XML, чтобы определить текущее состояние формы, и на первый взгляд я подумал об использовании XSLT для преобразования в JSF, но теперь я также оцениваю JSTL.Что касается последнего, у меня есть проблема.

Предположим, у меня есть этот XML-файл (анкета с двумя inputTexts):

<questionnaire>
    <component name='input'>
        <id>input1</id>
    </component>
    <component name='input'>
        <id>input2</id>
    </component>
</questionnaire>

И этот файл JSTL:

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<x:parse var="doc" xml="${questionarioXSLBean.xml}"/>

<x:forEach var="n" select="$doc/questionario/componente">
 <x:if select="$n/@nome = 'input'">
  <x:set var="id" select="$n/id" />
  <h:inputText id="#{id}"/>
 </x:if>
</x:forEach>

Проблема в этой строке: <h:inputText id="#{id}"/>, потому что #{id} ничего не возвращает (я хочу использовать значение, которое находится в файле xml и назначено в переменной id).

Может кто-нибудьПомоги мне?Заранее спасибо!PS

1 Ответ

0 голосов
/ 09 октября 2010

JSF, с другой стороны, имеет гораздо более сложный жизненный цикл. Несколько упрощенные компоненты JSF создаются, их просят обработать их входные данные (если они есть), а затем просят отрендерить себя. Чтобы JSF работал хорошо, эти три вещи должны происходить отдельно в четко определенном порядке, но когда JSF используется с JSP, они этого не делают. Вместо этого создание и рендеринг компонента происходит параллельно, вызывая всевозможные проблемы. Тот факт, что компоненты JSP и JSF добавляют контент к ответу, является еще одной причиной для большого горя. Если вы не понимаете разницы между тем, как эти две технологии пишут в ответ, вас ожидает множество сюрпризов, например, контент выходит из строя или не появляется вовсе. - Как обсуждено здесь

Таким образом, совместное использование JSF и JSP даст вам непредсказуемые результаты. Вам лучше использовать чистый подход JSF с использованием XSLT, как упомянуто выше

...