我尝试使用视图范围创建bean,但是每次访问bean时都会调用@PostConstruct函数。 这是一个非常简单的例子(.xhtml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:outputText value="#{documentFormBeanTest.test()}" />
<h:outputText value="#{documentFormBeanTest.test()}" />
</html>
这是我的豆子:
package lu.etat.pch.docroom.ejb.controllers;
import javax.annotation.PostConstruct;
import javax.faces.bean.ViewScoped;
import javax.inject.Named;
import java.io.Serializable;
/**
* User: André Faber
* Date: 22/04/13
*/
@Named
@ViewScoped
public class DocumentFormBeanTest implements Serializable {
@PostConstruct
public void init() {
System.out.println("*************************************************************");
}
public void test() {
System.out.println("Test");
}
}
现在我可以在我的日志中看到PostConstruct函数被调用的频率与我调用&#34; test&#34;功能(在这种情况下两次)。
不应该只创建一次bean(当我进入页面时)或者我错过了什么?
提前致谢
答案 0 :(得分:-1)
每个bean都有它唯一的Id(与任何其他元素一样)。使用debug mod并查看您的ID在不同点击次数上是否相同。 无论如何,我建议在按钮周围添加一个h:表单。