cte*_*ekk 3 java jsf javabeans primefaces jsf-2
我很好奇如何让JSF只在页面加载时加载某些业务逻辑,而不是在单击按钮(ActionEvent)或执行时运行此代码AjaxBehaviorEvent.
我的bean在@RequestScoped使用JSF 2.1和Primefaces.
因为ActionEvent和AjaxBehaviorEvent被称为事后我不知道该怎么告诉豆在@PostConstruct那是因为事件的调用.
是因为豆子放在错误的范围内?
仅在
页面加载GET请求时执行代码
如果FacesContext#isPostback()返回,只需签入(post)构造函数false.
@PostConstruct
public void init() {
if (!FacesContext.getCurrentInstance().isPostback()) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
在即将推出的JSF 2.2中,您可以使用new <f:viewAction>来替代它.
<f:viewAction action="#{bean.init}" onPostback="false" />
Run Code Online (Sandbox Code Playgroud)
是因为豆子放在错误的范围内?
取决于具体的功能要求.另请参见如何选择正确的bean范围?
我遇到了ViewScoped的严重问题.它总是需要一个序列化的类,我发现它很烦人;) - 另外它会导致'java.sql'出现问题
这表明您自己的代码设计存在问题,而不是视图范围.JDBC代码不属于JSF托管bean.如JDBC资源Connection等应该永远,永远被声明为实例变量.
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |