2012-06-22 37 views
0

我無法使JSF註釋正常工作。我花了一些時間試圖弄清楚這一點。我正在使用Maven + Tomcat7 + JSF2.16 + JDK1.7 + Spring 3 + Hibernate 4. 請原諒我,如果它是簡單的,因爲我是一個新手。使用Spring時JSF2註釋不起作用

這裏是我的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> 

我的臉配置文件被聲明爲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; 

如果我去了克萊爾託管豆類在臉部配置像這樣

 <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> 

這樣的作品,但我不明白爲什麼註釋不。

任何幫助或方向,我將不勝感激! 謝謝!

+0

我添加到了faces-config「metadata-complete =」false「>」並且在這個META-INF文件夾中放置了一個空的faces-config發帖http://stackoverflow.com/questions/2987266/why-doesnt-jsf-2-0-ri-mojarra-scan-my-class-annotations只是incase,但這似乎沒有改變任何東西。 – Curt

回答

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" /> 

你應該知道Spring中沒有view範圍,你應該實現自己。但不要害怕有很多例子:https://www.google.fr/search?sugexp=chrome,mod=7&sourceid=chrome&ie=UTF-8&q=spring+custom+viewscope

+0

謝謝,這很好用! – Curt

0

嘗試將此添加到您的spring上下文XML配置文件中。

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

它應該掃描你的類的bean。