在seam架构中,当试图用@Create注解public void init()方法时,发现这个方法的调用比界面的展示要晚。
比如进入页面的时候,需要load一些数据时,这些正常获取的数据不能正常显示在页面上。
下面提供了两个解决方案:
1. 添加一个方法initPage(),不做任何具体的事情。在page.xml文件中添加以下片段,目的是在进入xhtml文件时,就会调用@create注解的方法init(),达到获取的数据在页面正常显示的目的。
<page action="#{planDetailAction.initPage()}">
2. 下面这个方法也是需要注意的,如果没有on-postback进行设置为false,在当前页面的其他提交操作会重复调用该方法。
如果设置为false,则只会在进入页面的时候调用一次,达到初始化数据的目的。
<page>
<action execute="#{planDetailAction.initPlanProposal()}" on-postback="false"/>