0

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

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

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

但是当我使用这样的脚本时:

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

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

4

1 回答 1

2

我究竟做错了什么?

直言不讳,在你不应该使用scriptlet的情况下使用. 自十年前的 JSP 2.0 以来,不鼓励使用它们。

您的具体问题是因为它们在视图构建期间运行,而不是在视图渲染期间运行,就像 JSTL 和所有其他标记处理程序一样。此答案中对此进行了详细说明:JSF2 Facelets中的JSTL ...有意义吗?只需将“JSTL”替换为“scriptlet”即可了解发生了什么。总结:它们不会与 JSF 组件“同步”运行。它们是在构建 JSF 组件树期间执行的,而不是在 JSF 组件树生成 HTML 输出的过程中,正如您所期望的那样。

顺便说一句,在 JSP 的后续Facelets (XHTML) 中,已经不可能使用scriptlet了,所以您已经被迫以“正确的方式”做事。

于 2012-08-11T22:26:09.713 回答