在JSF中解析JSTL XML

问题描述:

我正在处理一个需要动态生成表单的项目。用户选择他想要放在屏幕上的组件,程序将其添加到窗体中。为此,我使用XML来定义表单的当前状态,并且乍一看我认为使用XSLT进行JSF转换,但现在我正在评估JSTL。 关于最后一个,我有一个问题。在JSF中解析JSTL XML

假设我有这样的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变量中赋值)。

任何人都可以帮助我吗? 在此先感谢! P.S.

另一方面,JSF的生命周期复杂得多。有点简化,创建JSF组件,要求处理它们的输入(如果有的话),然后要求呈现它们自己。为了JSF能够很好地工作,这三件事情必须按照明确定义的顺序单独发生,但是当JSF与JSP一起使用时,它们不会。相反,组件创建和渲染并行发生,导致各种问题。 JSP和JSF组件将内容添加到响应的事实是造成很多悲伤的另一个原因。除非您了解这两种技术如何写入响应之间的差异,否则您会遇到很多惊喜,例如内容出现乱序或根本不出现。 - 正如所讨论的here

因此,一起使用JSF和JSP会给你带来不可预测的结果。如上所述,您最好采用使用XSLT的纯JSF方法

+0

感谢Gaurav。关于XSLT,我遇到了一个问题,我无法找到解决方案。也许你能以某种方式帮助我。问题在于,在转换之后,生成的组件标签总是在其中包含一个名称空间定义,这样JSF就无法识别组件编码。例如,生成而不是生成。有没有压制它的方法? – 2010-10-13 10:06:34

+0

这需要查看您用于生成JSF的工具/代码。从头脑里想不出什么 – 2010-10-13 20:02:43