JSF - 没有重新加载内容

Posted

技术标签:

【中文标题】JSF - 没有重新加载内容【英文标题】:JSF - No reload content 【发布时间】:2011-05-25 19:25:54 【问题描述】:

伙计们! 我在 JSF <h:dataTable> 中有一个表,但是当我在表中创建一个新对象(使用 JPA 转发)时,有时它会显示,但有时不会。我必须单击一个选项卡来重新加载 xhtml 的内容,因为没有显示新元素。 从支持 bean 将对象添加到列表后,我可以重新加载页面吗?

感谢您的阅读,对不起我的英语。

【问题讨论】:

【参考方案1】:

显然,您将数据表的项目列表存储在会话范围内,而不是在添加新项目时重新加载它。您需要在添加新项目的action方法中重新加载它。

public void add() 
    saveNewItemInDB(newItem);
    items = reloadListOfItemsFromDB();

【讨论】:

【参考方案2】:

除了完全重新加载之外,您无法从支持 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 以重新加载页面。

【讨论】:

以上是关于JSF - 没有重新加载内容的主要内容,如果未能解决你的问题,请参考以下文章

JSF2 - 为啥渲染响应不重新渲染组件设置?

JSF 重新渲染清除添加 onload 的 html 代码

单击按钮时如何重新加载页面?

页面没有在反应中重新加载?

使用 AJAX 的 JSF 表单发布

重新加载滚动视图的内容