在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方法
感谢Gaurav。关于XSLT,我遇到了一个问题,我无法找到解决方案。也许你能以某种方式帮助我。问题在于,在转换之后,生成的组件标签总是在其中包含一个名称空间定义,这样JSF就无法识别组件编码。例如,生成而不是生成 。有没有压制它的方法? –
2010-10-13 10:06:34
这需要查看您用于生成JSF的工具/代码。从头脑里想不出什么 – 2010-10-13 20:02:43