0

我有一个使用 JSF 2.0 mojjarra 的 Web 应用程序。我想把我的托管 bean 类放到一个像这样命名的包中。

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>  

我的托管豆:

导入 javax.faces.bean.ManagedBean;导入 javax.faces.bean.ManagedProperty;导入 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>

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

4

1 回答 1

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
于 2012-09-06T13:29:24.833 回答