Ach*_*ius 3 java jsf jsp seam jstl
c:如果测试总是对我失败,它永远不会进入循环.我使用以下命名空间
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:c="http://java.sun.com/jstl/core"
Run Code Online (Sandbox Code Playgroud)
要拆分的字符串('array')是"Tom和Jerry是GAP1的朋友"
<s:decorate template="/layout/display-text.xhtml">
<c:set var="array" value="#{_mybean.value}"/>
<c:set var="space" value="#{fn:split(array, ' ')}"/>
<c:set var="len" value="#{fn:length(space)}"/>
<h:outputText value="total length = #{len}"/><br/>
<c:forEach begin="0" end="5" var="index">
<h:outputText value="index = #{index}, value = #{space[index]}"/><br/>
<c:set var="val" value="#{space[index]}"/>
<c:if test="#{fn:startsWith(val, 'GAP')}">
<h:outputText value="Found keyword parameter GAP" /><br/>
</c:if>
</c:forEach>
</s:decorate>
Run Code Online (Sandbox Code Playgroud)
JSTL核心URI无效.根据JSTL TLD,它应该是(注意额外的/jsp):
xmlns:c="http://java.sun.com/jsp/jstl/core"
Run Code Online (Sandbox Code Playgroud)
也就是说,将JSF与JSTL混合使用从来都不是一个好主意.它并不总能像您期望的那样给出结果,因为它们不像编码所期望的那样同步运行.JSP/JSTL首先从上到下运行,然后将生成的结果交给JSF再次从上到下进一步处理.这会导致一些特定的结构失败.更好地使用纯JSF组件/属性.
而c:forEach不是使用Seam a4j:repeat或Facelets ui:repeat而不是c:if使用rendered必须切换显示/隐藏的JSF组件的属性.而不是所有JSTL c:set,在托管bean构造函数或操作方法或getter中编写适当的代码逻辑.
然而,JSTL函数(fn)taglib在JSF中仍然非常有价值.你可以继续使用它.
| 归档时间: |
|
| 查看次数: |
1424 次 |
| 最近记录: |