0

我在rich:scrollableDataTable 上再次重新渲染时遇到问题,我有一个onrowclick 函数,可以将列表中的项目发送到编辑模式。

这是示例代码:

                <a4j:outputPanel id="reviewerOP" ajaxRendered="true">           
                    <h:outputText id="to" value="#{_folder.reviewerName}">
                    </h:outputText>
                </a4j:outputPanel>          
                <h:selectOneMenu id="sridSO" value="#{folderBean.selectedReviewerId}" style="display: #{_folder.editmode == true ? 'block':'none'}">
                    <s:selectItems id="selectItes" value="#{folderBean.reviewersList}" var="_reviewer" label="#{_reviewer.userName}" itemValue="#{_reviewer.userId}"
                                   noSelectionLabel="--Select a Reviewer--"/>
                </h:selectOneMenu>
        </h:column>

我的表的值指向带有@SessionScope 的实体列表。

该场景是当用户单击编辑按钮时,该特定行中的项目将处于编辑模式,并且下拉菜单将被启用,并且用户将能够为该文件夹选择审阅者。属性 editmode 是来自文件夹实体的瞬态属性。到目前为止,我能够正确呈现下拉菜单并将选定的审阅者保存在数据库中。但是我在重新渲染审阅者姓名时遇到了问题。在某些情况下,单击完成按钮后它不会重新渲染,但在某些情况下它运行良好。

reviewName 属性使用@Formula 从不同的表中获取名称。

我的问题是:@Formula 是否与延迟重新渲染或给出问题的 entityList 的范围有关。

我正在使用 seam.2.2 richfaces 3.x。和jsf2.0

谢谢 :)

4

1 回答 1

0

已经解决了问题。

我尝试使用一些日志对从我的实体列表返回的结果列表运行一些测试。我发现我的实体的属性在数据库和列表上都更新了。但使用公式的属性不更新。所以refresh() 方法将不起作用,并且不会重新读取使用@Formula. 所以我认为我的查询@Formula是由休眠缓存的,并且不会在第二次访问实体列表的结果列表时重新读取。

我的解决方案:

我使用的解决方案是清除EntityManager使用它的clear()方法。并且列表已正确更新,并且重新渲染效果很好。

-干杯

于 2011-12-28T01:02:15.183 回答