未构建的托管bean

时间:2014-09-04 19:31:42

标签: jsf managed-bean

我试图通过PrimeFaces面板在面板上显示随机数。我有以下xhtml代码:

<h:form>
    <p:growl id="msgs" showDetail="true" />
    <p:panel id="basic" header="Random Number"  style="margin-bottom:20px">
        <h:panelGrid columns="2" cellpadding="10">
            <h:outputText value="#{randomnum.number}" />
        </h:panelGrid>
    </p:panel>  
</h:form>

此面板调用randomnum.number,就像这样

import java.io.Serializable;
import java.util.Random;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped

public class randomnum implements Serializable {

    private int number;
    public randomnum() {            
    }       

    public int getNumber() {            
        return number;  
    }  

    @PostConstruct
    public void init() {
        Random r = new Random();
        int Low = 10;
        int High = 100;
        number = r.nextInt(High-Low) + Low;
        System.out.println("Random Number :"+number);
    }    
}

但是当我运行我的xhtml代码时,我看到了面板,但我内部没有看到任何内容。此外,控制台上不显示System.out.println()输出。我该如何解决这个问题?我的基本目标是当我运行xhtml代码时,必须在面板上显示一个随机数。

1 个答案:

答案 0 :(得分:1)

解决方案是根据Java代码约定使用名为correct的类:http://www.oracle.com/technetwork/java/codeconventions-135099.html

TL; DR: 将您的班级“randomnum”重命名为“Randomnum”。

这样JSF就会找到Bean,实例化它,调用@PostConstruct并显示值。