【问题标题】:How to set value in bean using use c:set with jsf?如何使用 c:set 和 jsf 在 bean 中设置值?
【发布时间】:2010-11-30 14:26:24
【问题描述】:

我还有一个问题要解决。我的 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>

问题是,当我检查 bean 时,'fid' 的值为 null。我写的时候:

<c:set target="#{myBean}" property="fid" value="8"/>

一切正常,值设置为“8”。我应该如何解决这个问题?感谢您的回复。

【问题讨论】:

    标签: jsf jakarta-ee


    【解决方案1】:

    JSTL 标记在视图构建期间运行。 JSF 标记在视图呈现期间运行。可以想象成这样:JSTL在要填充JSF组件树时先从上到下运行,然后将组件树交给JSF,最后JSF从上到下运行渲染HTML。

    当 JSTL 创建视图时,element[0] 不存在。它仅在 JSF 呈现 HTML 时出现。但是,8 是硬编码的,并且始终存在。

    有几种方法可以正确地实现它,但是由于功能要求不清楚,我无法提出正确的方法。也许你需要f:setPropetyActionListener。也许你需要DataModel#getRowData()UIData#getRowData()。或者你根本不需要它。

    【讨论】:

    • 感谢您向我解释这一点。幸运的是,我已经找到了我的问题的另一个解决方案,我不需要使用此代码。向你问好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2011-11-13
    • 2017-06-29
    相关资源
    最近更新 更多