为什么不刷新jsf页面
我创建一个bean作为为什么不刷新jsf页面,jsf,jsf-2,Jsf,Jsf 2,我创建一个bean作为 @ManagedBean @RequestScoped public class KhachHangMB implements Serializable { @PersistenceContext(unitName = "XoSoWebPU") private EntityManager em; private List<KhachHang> l; public KhachHangMB() { l = new ArrayList<KhachHa
@ManagedBean
@RequestScoped
public class KhachHangMB implements Serializable {
@PersistenceContext(unitName = "XoSoWebPU")
private EntityManager em;
private List<KhachHang> l;
public KhachHangMB() {
l = new ArrayList<KhachHang>();
}
@PostConstruct
public void init() {
l = new ArrayList<KhachHang>();
l = em.createNamedQuery("KhachHang.findAll").getResultList();
MsgShow.showMsg("", "Init " + Math.random());
}
public List<KhachHang> retriveAllKhachHang() {
return l;
}
@ManagedBean
@请求范围
公共类KhachHangMB实现了可序列化{
@PersistenceContext(unitName=“XoSoWebPU”)
私人实体管理者;
私人名单l;
公共哈什汉姆布(){
l=新的ArrayList();
}
@施工后
公共void init(){
l=新的ArrayList();
l=em.createNamedQuery(“KhachHang.findAll”).getResultList();
MsgShow.showMsg(“,”Init“+Math.random());
}
公共列表检索{
返回l;
}
}
和我的jsf页面:
<h:form>
<h1><h:outputText value="List"/></h1>
<h:dataTable value="#{khachHangMB.retriveAllKhachHang()}" var="item">
<h:column>
<f:facet name="header">
<h:outputText value="Idkh"/>
</f:facet>
<h:outputText value="#{item.idkh}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="TenKH"/>
</f:facet>
<h:outputText value="#{item.tenKH}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Cmnd"/>
</f:facet>
<h:outputText value="#{item.cmnd}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="DiaChi"/>
</f:facet>
<h:outputText value="#{item.diaChi}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="SoDT"/>
</f:facet>
<h:outputText value="#{item.soDT}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Email"/>
</f:facet>
<h:outputText value="#{item.email}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="MaDuThuong"/>
</f:facet>
<h:outputText value="#{item.maDuThuong}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="GhiChu"/>
</f:facet>
<h:outputText value="#{item.ghiChu}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="MatKhau"/>
</f:facet>
<h:outputText value="#{item.matKhau}"/>
</h:column>
</h:dataTable>
<h:commandLink value="Click" action="home" />
</h:form>
还有我的脸
<navigation-rule>
<navigation-case>
<from-outcome>trungthuong_list</from-outcome>
<to-view-id>/f_trungthuong/trungthuong_list.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-outcome>home</from-outcome>
<to-view-id>index.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
Trunthuong_列表
/f_trungthuong/trungthuong_list.xhtml
家
index.xhtml
我点击命令链接随机调用,但页面上的数据没有改变,尽管我已经编辑了数据库上的数据。另一种情况是,我返回后导航到其他页面,但数据是旧的(不使用web浏览器的背面,我使用的是命令链接)!请帮帮我 我认为您应该尝试将文件
persistence.xml
中的选项共享缓存模式设置为None
。这帮助我解决了一个与你不久前类似的问题。:) 如果数据库中的数据已更改,则可以重新启动应用程序,以确保这是JSF问题。正如J4mes先生在回答中解释的那样,这看起来像是一个休眠问题。另一个建议是,您应该将业务逻辑从视图控制器类中分离出来,这样您的应用程序将更易于维护,并且可以拥有可重用的资产(例如检索KhachHang
对象的完整列表的唯一方法)。非常感谢,这太棒了!