我还有另一个问题需要解决。我的xhtml页面上有一个代码:
<t:dataList id="myDataList" value="#{myBean.myList}" var="element" first="0" `rows="10" dir="LTR" frame="hsides" rules="all">`
<c:set target="#{myBean}" property="fid" value="#{element[0]}"/>
...
</t:dataList>
问题在于&#39; fid&#39;当我检查它时,bean中的null为null。我写的时候:
<c:set target="#{myBean}" property="fid" value="8"/>
一切正常,价值设定为&#39; 8&#39;。我该如何解决这个问题?谢谢你的回复。
答案 0 :(得分:0)
JSTL标记在视图构建期间运行。 JSF标记在视图渲染时运行。您可以将其可视化如下:当要填充JSF组件树时,JSTL首先从上到下运行,然后将组件树移交给JSF,最后JSF从上到下运行以呈现HTML。
当JSTL创建视图时,element[0]
不存在。只有当JSF呈现HTML时才会出现这种情况。但是,8
是硬编码的,它始终存在。
有几种方法可以以正确的方式实现它,但由于功能要求不清楚,我无法提出正确的方法。也许你需要f:setPropetyActionListener
。也许您需要DataModel#getRowData()
或UIData#getRowData()
。或许你根本不需要它。