0

JSF アノテーションを機能させるのに問題があります。私はこれを理解しようとしてしばらく時間を費やしました。Maven + Tomcat7 + JSF2.16 + JDK1.7 + Spring 3 + Hibernate 4 を使用しています。

ここに私のpom.xmlがあります

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>com.uk.todolist</groupId>
<artifactId>UkToDoList</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>UkToDoList</name>
<url>http://maven.apache.org</url>

<repositories>
    <repository>
        <id>prime-repo</id>
        <name>PrimeFaces Maven Repository</name>
        <url>http://repository.primefaces.org</url>
        <layout>default</layout>
    </repository>
</repositories>

<properties>
    <spring.version>3.1.1.RELEASE</spring.version>
    <spring.security.version>3.0.5.RELEASE</spring.security.version>
</properties>


<dependencies>

    <!-- Spring 3 dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>   

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>            
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <!-- JSF library -->
    <dependency>
      <groupId>com.sun.faces</groupId>
      <artifactId>jsf-api</artifactId>
      <version>2.1.6</version>
    </dependency>

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

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

    <!-- Primefaces library -->
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>3.1.1</version>
    </dependency>

    <!-- Hibernate library -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.1.0.Final</version>
    </dependency>

    <!-- MySQL Java Connector library -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.20</version>
    </dependency>

    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>            

    <!-- Log4j library -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

</dependencies>

<build>     
    <finalName>UkToDoList</finalName>
</build> 

私のFaces構成ファイルは、次のようにJSF 2として宣言されています

    <?xml version="1.0" encoding="UTF-8"?>
    <faces-config
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee        http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">

私のマネージドBeanは次のように注釈が付けられています

    @ManagedBean
    @ViewScoped
    public class TaskManagedBean implements Serializable {

private static final long serialVersionUID = 1L;
private static final String SUCCESS = "success";
private static final String ERROR   = "error";

//NOTE: Task Service is injected
@ManagedProperty(value="#{TaskService}")
TaskService taskService;

マネージドBeanをfaces-configで次のように宣言すると

     <managed-bean>
       <managed-bean-name>taskManagedBean</managed-bean-name>
       <managed-bean-          class>com.uk.todolist.managed.bean.TaskManagedBean</managed-bean-class>
       <managed-bean-scope>session</managed-bean-scope>     
    </managed-bean>

これは機能しますが、注釈が機能しない理由がわかりません。

ヘルプや指示があれば、とても感謝しています! ありがとう!

4

2 に答える 2

0

BeanにJSFアノテーションを使用できるとは思いません。しかし、私は間違っているかもしれません

私はあなたと同じテクノロジーを使用しており、JSFアノテーションは使用していません。私は代わりにこれが好きです:

@Component
@Scope(value = "session")
public class TaskManagedBean implements Serializable {

private static final long serialVersionUID = 1L;
private static final String SUCCESS = "success";
private static final String ERROR   = "error";

//NOTE: Task Service is injected
@Autowired
TaskService taskService;

そして、ペッターが言ったように挿入することを忘れないでください。

<context:component-scan base-package="your.base.package" />

viewSpringにはスコープがないことを知っておく必要があり、自分で実装する必要があります。しかし、多くの例があることを恐れないでください:https ://www.google.fr/search?sugexp=chrome,mod=7&sourceid=chrome&ie=UTF-8&q=spring+custom+viewscope

于 2012-06-23T09:07:59.263 に答える
0

これをSpringコンテキストのXML構成ファイルに追加してみてください。

<context:component-scan base-package="your.base.package" />

クラスの Bean をスキャンする必要があります。

于 2012-06-22T20:23:30.237 に答える