如何告诉jsf哪些包存储托管bean

时间:2012-09-06 13:26:10

标签: jsf jsf-2

我有一个使用JSF 2.0 mojjarra的Web应用程序。我想将我的托管bean类放到一个名为this的包中。

package com.myapp.managedbean

如何告诉jsf扫描此软件包以获取带注释的托管bean。

我的maven依赖

dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
</dependency>
 <dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-api</artifactId>
  <version>2.0.2</version>
</dependency>

<dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-impl</artifactId>
  <version>2.0.2</version>
</dependency>

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>

<dependency>  
    <groupId>org.primefaces</groupId>  
    <artifactId>primefaces</artifactId>  
    <version>3.4</version>  
</dependency>

<dependency>  
    <groupId>org.apache.tomcat</groupId>  
    <artifactId>tomcat-servlet-api</artifactId>  
    <version>7.0.26</version>  
    <scope>provided</scope>  
  </dependency>  

我的托管bean:

import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.SessionScoped;

@ManagedBean(name="helloWorld")
@SessionScoped
public class HelloWorld{

    @ManagedProperty(value="Hello World")
    private String a;

public String getA() {
    return a;
}

public void setA(String a) {
    this.a = a;
}

}

我的页面:

<h:head></h:head>

<h:body>

<p:outputLabel for="extended"  />  
            <p:inputText id="extended" value="#{helloWorld.a}" />

</h:body>

</html>

该页面仅显示一个空文本字段。

1 个答案:

答案 0 :(得分:1)

您不必指定将注释放在类名之上,就像这样 它会自己找到它们......

@ManagedBean
@SessionScoped
public class MyBean {

而不是

@ManagedProperty(value="Hello World")
private String a;

只是做

private String a = "Hello World";

这不是ManagedProperty的使用方式,请关注一下谷歌

一般ManagedProperty用于注入值/ bean

这里是一个如何注入另一个bean的例子

@ManagedProperty(value = "#{someOtherBean }")
private SomeOtherBean someOtherBean ; // + getter and setter