最近做个项目,使用到frameset html框架完成,视图技术采用Jsf + richfaces实现,在开发过程中发现,jsf的视图不能表现响应数据库的变化.(在frame页面框架中:在A页面进行数据库操作,B页面是个关联到A页面数据的子表数据的crud页面),正常情况下,删除了A页面的主表数据,B页面的子表记录应该删除.但是.发现B页面的子表相关数据依旧保留,而数据库是已经做了级联删除并且已经提交了的.
在这种情况下,可以采用以下做法
we.xml中
context-param>
<param-name>onload-config</param-name>
<param-value>/WEB-INF/onload-config.xml</param-value>
</context-param>
faces-config.xml中:
<lifecycle>
<phase-listener>net.sf.jsfcomp.onload.OnLoadPhaseListener</phase-listener>
</lifecycle>
onload-config.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<onload-config xmlns="urn:onload-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:onload-config onload-config.xsd">
<navigation-rule>
<view-id>/welcome.jsp</view-id>
<action>#{bean.actionMethod}</action>
</navigation-rule>
<navigation-rule>
<view-id>/path*</view-id>
<action>#{bean.actionMethod}</action>
</navigation-rule>
</onload-config>
使得在加载页面的时候,指定执行某个method.避免相关页面数据的不一致
英文文档:http://jsf-comp.sourceforge.net/components/on-load/index.html