简体   繁体   English

JSF 2.2.1,后备bean无法绑定到xhtml页面

[英]Jsf 2.2.1, Backing beans cannot be bound to xhtml pages

I'm trying to develop a simple Jsf 2.2.1 application. 我正在尝试开发一个简单的Jsf 2.2.1应用程序。 I have looked through some pages and found sample applications. 我浏览了一些页面并找到了示例应用程序。 I wanted to try one of those samples. 我想尝试这些示例之一。 I set every dependencies and annotations; 我设置了每个依赖项和注释; however, the backing bean is not working. 但是,辅助bean无法正常工作。 What I wanted to do is to show some text fields via bean on the Jsf page and render some input texts. 我想做的是通过Jsf页面上的bean显示一些文本字段并呈现一些输入文本。 Jsf tags are working correctly but the bean values are not shown on the page. Jsf标记正常工作,但Bean值未显示在页面上。 In the page I have an input text area and a command button. 在页面中,我有一个输入文本区域和一个命令按钮。 These components are shown on the page but I feed some text and press the command button I encounter the following problem. 这些组件显示在页面上,但是我输入了一些文本并按下命令按钮时遇到以下问题。 I am building the app with "mvn clean package" and then deploying it on Tomcat 7.x. 我正在使用“ mvn clean package”构建应用程序,然后将其部署在Tomcat 7.x上。

Error: 错误:

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

In the followings I am sharing all my files. 在以下内容中,我将共享我的所有文件。

web.xml: 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: 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>

Java Beans: HelloWorld.java Java Bean: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: 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();
}
}

What exactly am I missing in my files? 我的文件中到底缺少什么?

PropertyNotFoundException mean there is no getter/setter property method in your backing bean. PropertyNotFoundException表示您的后备Bean中没有getter/setter属性方法。

HelloWorldBean.java HelloWorldBean.java

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

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

mypage 我的页面

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM