目标不可访问,标识符解析为空JSF 2.2

目标不可访问,标识符解析为空JSF 2.2,jsf,el,propertynotfoundexception,Jsf,El,Propertynotfoundexception,我已经看过了: 但是没有一个为我工作 Login.xhtml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/199

我已经看过了:

但是没有一个为我工作

Login.xhtml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login Page</title>
</head>
<body>
    <h:form prependId="false">

        <h3>WELLCOME</h3>
        <br />
        <h3>Enter</h3>
        <table>
            <tr>
                <td><h3>Name</h3></td>
                <td><h:inputText value="#{user.name}" id="name" /></td>
            </tr>
            <tr>
                <td><h3>password</h3></td>
                <td><h:inputSecret value="#{user.password}" id="password" /></td>
            </tr>
        </table>

        <h:commandButton value="Login">
            <f:ajax execute="name password" render="out" />
        </h:commandButton>
        <h3>
            <h:outputText id="out" value="#{user.greeting}" />
        </h3>

    </h:form>
</body>
</html>
我没有配置那些web.xml,因为据我所知,jsf2.2本身就是这样做的


AJAX
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
/面孔/*
状态保存方法:“客户端”或“服务器”(=默认值)。参见JSF规范2.5.2
javax.faces.STATE_保存方法
客户
javax.servlet.jsp.jstl.fmt.localizationContext
资源.应用
com.sun.faces.config.ConfigureListener
配置面:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">

</faces-config>
这一警告:

Typee value of the field User.greeting is not used  
但是有两个字符串具有相同的get和set,但没有警告


我使用tomcat 7.0.54。

尝试使用不同的注释

import javax.faces.bean.ManagedBean;
而不是JavaEE6

import javax.annotation.ManagedBean;

您当前的代码有很多错误:

  • 您没有使用JSF标准标记。使用:

    • 而不是
      (这是中大多数ajax功能所必需的。没有它,页面上就无法包含支持ajax所必需的javascript
    • 而不是

  • HTTP-500表示代码中存在实际错误。

    不要害怕500错误代码。请仔细阅读堆栈跟踪。代码中存在一些错误,如空指针异常。请检查此代码并告知结果

    import java.io.Serializable;
    
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    
    @ManagedBean
    @SessionScoped
    public class User implements Serializable {
    
        private String name;
        private String password;
        private String greeting;
    
        /**
         * @return
         */
        public String getGreeting() {
            if (name == null ||name.length() == 0)
                return "";
            else
                return "Welcome to JSF2 + Ajax, " + name + "!";
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public void setGreeting(String greeting) {
            this.greeting = greeting;
        }
    
    }
    

    另外,请注意@kolossus answer并使用标准jsf标记和注释

    我建议您使用javax.faces.bean.ManagedBean而不是javax.annotation.ManagedBean,然后它甚至无法加载第一页。http状态500这是因为空指针异常(名称为空)。请查看我的答案。重复:然后它甚至无法加载第一页。http状态500表示发生了异常。看起来您现在有另一个问题。使用其他库,我可以查看第一页并单击按钮。
    import javax.annotation.ManagedBean;
    
    import java.io.Serializable;
    
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    
    @ManagedBean
    @SessionScoped
    public class User implements Serializable {
    
        private String name;
        private String password;
        private String greeting;
    
        /**
         * @return
         */
        public String getGreeting() {
            if (name == null ||name.length() == 0)
                return "";
            else
                return "Welcome to JSF2 + Ajax, " + name + "!";
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public void setGreeting(String greeting) {
            this.greeting = greeting;
        }
    
    }