2010-10-08 11 views
1

Je travaille sur un projet dont j'ai besoin pour générer un formulaire dynamiquement. L'utilisateur choisit le composant qu'il veut mettre sur l'écran et le programme l'ajoute dans le formulaire. Pour ce faire, j'utilise XML pour définir l'état actuel du formulaire et, à première vue, j'ai pensé à utiliser XSLT pour effectuer la transformation en JSF mais maintenant j'évalue aussi JSTL. Concernant le dernier, j'ai un problème.Parse JSTL XML à l'intérieur de JSF

Supposons que j'ai ce fichier xml (un questionnaire avec deux inputTexts):

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

Ce fichier 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> 

Le problème est dans cette ligne: <h:inputText id="#{id}"/> parce #{id} doesn ne retourne rien (je veux utiliser la valeur qui est dans le fichier xml et assignée dans la variable id).

Quelqu'un peut-il m'aider? Merci d'avance! P.S.

Répondre

0

JSF, d'autre part, a un cycle de vie beaucoup plus complexe. Un peu simplifiés, les composants JSF sont créés, invités à traiter leur entrée (le cas échéant), puis invités à se rendre eux-mêmes. Pour que JSF fonctionne bien, ces trois choses doivent se produire séparément dans un ordre bien défini, mais lorsque JSF est utilisé avec JSP, ce n'est pas le cas. Au lieu de cela, la création et le rendu des composants se font en parallèle, provoquant toutes sortes de problèmes. Le fait que les composants JSP et JSF ajoutent du contenu à la réponse est une autre cause de beaucoup de chagrin. À moins que vous ne compreniez la différence entre la façon dont ces deux technologies écrivent dans la réponse, vous avez beaucoup de surprises, comme un contenu qui apparaît hors service ou pas du tout. - Comme discuté here

Ainsi, en utilisant JSF et JSP ensemble, vous obtiendrez des résultats imprévisibles. Il est préférable de prendre une approche JSF pure en utilisant XSLT comme mentionné ci-dessus

+0

Merci Gaurav. En ce qui concerne XSLT, j'ai eu un problème en l'utilisant et je n'ai pas trouvé de solution. Peut-être que vous pouvez m'aider d'une manière ou d'une autre. Le problème est qu'après la transformation, les balises de composant générées incluent toujours une définition d'espace de nommage à l'intérieur, de cette manière, JSF ne peut pas reconnaître la codification du composant. Par exemple, au lieu de générer il génère . Y a-t-il un moyen de le supprimer? –

+0

Cela nécessiterait un coup d'oeil à l'outil/code que vous utilisez pour générer JSF. Je ne peux rien penser du haut de ma tête –