【发布时间】:2011-05-25 19:25:54
【问题描述】:
伙计们!
我在 JSF <h:dataTable> 中有一个表,但是当我在表中创建一个新对象(使用 JPA 转发)时,有时它会显示,但有时不会。我必须单击一个选项卡来重新加载 xhtml 的内容,因为没有显示新元素。 从支持 bean 将对象添加到列表后,我可以重新加载页面吗?
感谢您的阅读,对不起我的英语。
【问题讨论】:
标签: jsf
伙计们!
我在 JSF <h:dataTable> 中有一个表,但是当我在表中创建一个新对象(使用 JPA 转发)时,有时它会显示,但有时不会。我必须单击一个选项卡来重新加载 xhtml 的内容,因为没有显示新元素。 从支持 bean 将对象添加到列表后,我可以重新加载页面吗?
感谢您的阅读,对不起我的英语。
【问题讨论】:
标签: jsf
显然,您将数据表的项目列表存储在会话范围内,而不是在添加新项目时重新加载它。您需要在添加新项目的action方法中重新加载它。
public void add() {
saveNewItemInDB(newItem);
items = reloadListOfItemsFromDB();
}
【讨论】:
除了完全重新加载之外,您无法从支持 bean 控制页面,但如果您在某些操作上创建新对象,例如单击按钮,那么您可以使用 ajax 执行以下操作:
<h:commandButton actionListener="#{bean.addNewObject}" value="Add">
<f:ajax execute="@this" render="tableId" event="click" />
</h:commandButton>
如果你不想使用ajax并重新加载整个页面,那么使用commandButton的action参数:
<h:commandButton action="#{bean.addNewObjectAction()}" value="Add"/>
其中 addNewObjectAction 返回 null 以重新加载页面。
【讨论】: