2013-07-17 2 views
0

간단한 Jsf 2.2.1 애플리케이션을 개발하려고합니다. 일부 페이지를 살펴본 결과 샘플 응용 프로그램을 발견했습니다. 나는 그 샘플들 중 하나를 시험해보고 싶었다. 모든 종속성과 주석을 설정합니다. 그러나 백업 빈이 작동하지 않습니다. Jsf 페이지에서 bean을 통해 텍스트 필드를 보여주고 일부 입력 텍스트를 렌더링하고 싶습니다. Jsf 태그가 올바르게 작동하지만 bean 값은 페이지에 표시되지 않습니다. 이 페이지에는 입력 텍스트 영역과 명령 버튼이 있습니다. 이러한 구성 요소는 페이지에 표시되지만 일부 텍스트를 입력하고 다음과 같은 문제가 발생하는 명령 단추를 누릅니다. 나는 "mvn clean package"로 앱을 만들고 Tomcat 7.x에 배포하고있다.Jsf 2.2.1, Backing Bean을 xhtml 페이지에 바인딩 할 수 없음

오류 : 내 모든 파일을 공유하고있는 다음에

serverError: class javax.el.PropertyNotFoundException Target Unreachable, identifier 'helloWorld' resolved to null 

.

의 web.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.5" 
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-app_2_5.xsd"> 
<display-name>helloworld</display-name> 
<welcome-file-list> 
    <welcome-file>home.xhtml</welcome-file> 
</welcome-file-list> 
<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 
<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
</context-param> 

의 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.test</groupId> 
<artifactId>helloworld</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>helloworld Maven Webapp</name> 
<url>http://maven.apache.org</url> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>2.2.1</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>2.2.1</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 
      <dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>el-api</artifactId> 
     <version>2.2</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>el-impl</artifactId> 
     <version>2.2</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

<build> 
    <finalName>helloworld</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.1</version> 
      <configuration> 
       <source>1.5</source> 
       <target>1.5</target> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 
<repositories> 
    <repository> 
     <id>maven2-repository.dev.java.net</id> 
     <name>java.net Repository for Maven</name> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 
</repositories> 

자바 콩 : HelloWorld.java

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

@ManagedBean(name="helloWorld") 
@SessionScoped 
public class HelloWorld { 
private String name="Zaman Safari"; 
@ManagedProperty(value = "#{demoService}") 
private Service service; 
public HelloWorld(){ 
    System.out.println("HELLOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"); 
} 
public String getName(){ 
    return name; 
} 

public void setName(String name){ 
    this.name = name; 
} 

public void setService(Service service){ 
    this.service = service; 
} 

public String getReverse(){ 
    return service.reverse(name); 
} 
} 

Service.java : 정확히 내 파일에

import javax.faces.bean.ApplicationScoped; 
import javax.faces.bean.ManagedBean; 

@ManagedBean(name="demoService") 
@ApplicationScoped 
public class Service { 

public String reverse(String name) { 
    return new StringBuffer(name).reverse().toString().toLowerCase(); 
} 
} 

를 놓친 거지 뭐?

답변

0

PropertyNotFoundException 의미있는 바우처 bean에 getter/setter 속성 메소드가 없습니다.

HelloWorldBean.java

@ManagedBean(name="HelloWorldBean") 
public calss HelloWorldBean { 

    private String getHelloWorld() { 
     return "Hello World!"; 
    } 
} 

마이 페이지 빈에 대한

<h:outputText value="#{HelloWorldBean.helloWorld}"/> 
+0

사실, 내가 설정 한 게터/세터. 그러나 문제는 내가 자바 일반 클래스를 만들지 않았지만 다른 콩을 만들었습니다. 고맙습니다. – nudastack

+0

Maven 명령을 통해 응용 프로그램을 빌드하고 Tomcat 서버에 배포합니다. 프로젝트를 복사하여 붙여 넣는 부담입니다. Eclipse IDE에서 Tomcat 7.x를 활성화하여이 앱을 실행할 수 있습니까? – nudastack

관련 문제