在scriptlet中使用getRowIndex

时间:2012-08-11 21:57:27

标签: jsp jsf datatable scriptlet

我正在尝试在scriplet中获取JSF数据表的行索引。

使用JSF组件,它就像一个魅力:

<h:outputText value="#{Operations.postsDataTable.rowIndex}" /> 

但是当我使用这样的scriptlet时:

<% out.println(Operations.getPostsDataTable().getRowIndex()); %>

然后它会为每一行打印-1。我做错了什么?

1 个答案:

答案 0 :(得分:2)

  

我做错了什么?

shouldn't时使用 scriptlet 。自从十年前的JSP 2.0以来,它们的使用受到劝阻。

导致您的具体问题是因为它们在视图构建期间运行,而不是在视图渲染时间内运行,与JSTL和所有其他标记处理程序完全相同。在这个答案中对此进行了详细解释:JSTL in JSF2 Facelets... makes sense?只需用“scriptlets”替换“JSTL”即可了解正在发生的事情。总结:它们不与JSF组件“同步”运行。它们在构建JSF组件树期间执行,而不是在JSF组件树生成HTML输出期间执行,如您所期望的那样。

顺便说一句,在JSP的后继者Facelets(XHTML)中,已经不可能使用 scriptlets ,所以你不得不以“正确的方式”做事。