Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 目标不可访问标识符已解析为空_Jsp_Jsf_Model View Controller_Web Applications_Managed Bean - Fatal编程技术网

Jsp 目标不可访问标识符已解析为空

Jsp 目标不可访问标识符已解析为空,jsp,jsf,model-view-controller,web-applications,managed-bean,Jsp,Jsf,Model View Controller,Web Applications,Managed Bean,大家好,我是jsp新手,这是我的第一个项目,我学习了托管bean、导航规则等,我看不出这里有什么问题。我所有的密码都是这些。请帮帮我,因为我想找到这个快疯了。错误是/pages/login.jsp(31,2)#{employee.username}目标无法访问,标识符“employee”解析为null Employee.java package com; public class Employee { private String username; private Strin

大家好,我是jsp新手,这是我的第一个项目,我学习了托管bean、导航规则等,我看不出这里有什么问题。我所有的密码都是这些。请帮帮我,因为我想找到这个快疯了。错误是/pages/login.jsp(31,2)#{employee.username}目标无法访问,标识符“employee”解析为null

Employee.java

package com;

public class Employee {
    private String username;
    private String password;
    private String name;
       private String department;
       private int age;
       private double salary;
       private boolean canEdit;

       public Employee (String username,String password,String name,String department,int age,double salary){
          this.username = username;
          this.password = password;
          this.name = name;
          this.department = department;
          this.age = age;
          this.salary = salary;
          canEdit = false;
       }

       public String getUsername() {
          return username;
       }
       public void setUsername(String username) {
          this.username = username;
       }
       public String getPassword() {
          return password;
       }
       public void setPassword(String password) {
          this.password = password;
       }
       public String getName() {
          return name;
       }
       public void setName(String name) {
          this.name = name;
       }

       public String getDepartment() {
          return department;
       }

       public void setDepartment(String department) {
          this.department = department;
       }

       public int getAge() {
          return age;
       }

       public void setAge(int age) {
          this.age = age;
       }

       public double getSalary() {
          return salary;
       }

       public void setSalary(double salary) {
          this.salary = salary;
       }

       public boolean isCanEdit() {
          return canEdit;
       }

       public void setCanEdit(boolean canEdit) {
          this.canEdit = canEdit;
       }    

}
package com;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;

public class UserData implements Serializable {

private static final long serialVersionUID = 1L;

   private String username;
   private String password;
   private String name;
   private String department;
   private int age;
   private double salary;

   private static final ArrayList<Employee> employees
      = new ArrayList<Employee>(Arrays.asList(
      new Employee("1","1","John", "Marketing", 30,2000.00),
      new Employee("2","2","Robert", "Marketing", 35,3000.00),
      new Employee("3","3","Mark", "Sales", 25,2500.00),
      new Employee("4","4","Chris", "Marketing", 33,2500.00),
      new Employee("5","5","Peter", "Customer Care", 20,1500.00)
   ));  


   public ArrayList<Employee> getEmployees() {
      return employees;
   }

   public String addEmployee() {         
      Employee employee = new Employee(username,password,name,department,age,salary);
      employees.add(employee);
      return null;
   }

   public String deleteEmployees(Employee employee) {
      employees.remove(employee);       
      return null;
   }

   public String editEmployee(Employee employee){
      employee.setCanEdit(true);
      return null;
   }
   public String saveEmployees(){
      for (Employee employee : employees){
         employee.setCanEdit(false);
      }     
      return null;
   }
       public String getUsername() {
          return username;
       }
       public void setUsername(String username) {
          this.username = username;
       }
       public String getPassword() {
          return password;
       }
       public void setPassword(String password) {
          this.password = password;
       }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getDepartment() {
      return department;
   }
   public void setDepartment(String department) {
      this.department = department;
   }

   public int getAge() {
      return age;
   }

   public void setAge(int age) {
      this.age = age;
   }

   public double getSalary() {
      return salary;
   }

   public void setSalary(double salary) {
      this.salary = salary;
   }
   public String loginAction(){
         String action = null;

         if (username.equalsIgnoreCase("admin") && password.equalsIgnoreCase("a"))
             action = "loginAdmin";
         else
             action = "loginUser";

         return action;
     }
}
UserData.java

package com;

public class Employee {
    private String username;
    private String password;
    private String name;
       private String department;
       private int age;
       private double salary;
       private boolean canEdit;

       public Employee (String username,String password,String name,String department,int age,double salary){
          this.username = username;
          this.password = password;
          this.name = name;
          this.department = department;
          this.age = age;
          this.salary = salary;
          canEdit = false;
       }

       public String getUsername() {
          return username;
       }
       public void setUsername(String username) {
          this.username = username;
       }
       public String getPassword() {
          return password;
       }
       public void setPassword(String password) {
          this.password = password;
       }
       public String getName() {
          return name;
       }
       public void setName(String name) {
          this.name = name;
       }

       public String getDepartment() {
          return department;
       }

       public void setDepartment(String department) {
          this.department = department;
       }

       public int getAge() {
          return age;
       }

       public void setAge(int age) {
          this.age = age;
       }

       public double getSalary() {
          return salary;
       }

       public void setSalary(double salary) {
          this.salary = salary;
       }

       public boolean isCanEdit() {
          return canEdit;
       }

       public void setCanEdit(boolean canEdit) {
          this.canEdit = canEdit;
       }    

}
package com;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;

public class UserData implements Serializable {

private static final long serialVersionUID = 1L;

   private String username;
   private String password;
   private String name;
   private String department;
   private int age;
   private double salary;

   private static final ArrayList<Employee> employees
      = new ArrayList<Employee>(Arrays.asList(
      new Employee("1","1","John", "Marketing", 30,2000.00),
      new Employee("2","2","Robert", "Marketing", 35,3000.00),
      new Employee("3","3","Mark", "Sales", 25,2500.00),
      new Employee("4","4","Chris", "Marketing", 33,2500.00),
      new Employee("5","5","Peter", "Customer Care", 20,1500.00)
   ));  


   public ArrayList<Employee> getEmployees() {
      return employees;
   }

   public String addEmployee() {         
      Employee employee = new Employee(username,password,name,department,age,salary);
      employees.add(employee);
      return null;
   }

   public String deleteEmployees(Employee employee) {
      employees.remove(employee);       
      return null;
   }

   public String editEmployee(Employee employee){
      employee.setCanEdit(true);
      return null;
   }
   public String saveEmployees(){
      for (Employee employee : employees){
         employee.setCanEdit(false);
      }     
      return null;
   }
       public String getUsername() {
          return username;
       }
       public void setUsername(String username) {
          this.username = username;
       }
       public String getPassword() {
          return password;
       }
       public void setPassword(String password) {
          this.password = password;
       }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getDepartment() {
      return department;
   }
   public void setDepartment(String department) {
      this.department = department;
   }

   public int getAge() {
      return age;
   }

   public void setAge(int age) {
      this.age = age;
   }

   public double getSalary() {
      return salary;
   }

   public void setSalary(double salary) {
      this.salary = salary;
   }
   public String loginAction(){
         String action = null;

         if (username.equalsIgnoreCase("admin") && password.equalsIgnoreCase("a"))
             action = "loginAdmin";
         else
             action = "loginUser";

         return action;
     }
}

正如巴卢斯克所说,这是很久以前就不赞成的。除了他提到的资源之外,我认为你应该用谷歌搜索他自己的博客,在那里你可以找到学习JSF所需的一切。
至于您真正的问题,请注意,在您的
login.jsp
页面中,您正在关闭
datatable
,在这里您定义了
employee
var:

<h:dataTable value="#{userData.employees}" var="employee"></h:dataTable>

就在评论部分之前。然后你打电话来

<h:inputText id="username"  value="#{employee.username}">


这是很正常的,
员工
变量将无法识别。

扔掉您当前用于学习JSF的资源。到目前为止发布的代码是带有JSP的遗留JSF1.x,它几乎在4年前就被弃用了,取而代之的是带有Facelets的JSF2.x。请特别查找明确声明“JSF2.0”或“JSF2.x”的资源。在我们的JSF wiki页面底部,您可以找到一些到sane资源的链接(您可以通过将
[JSF]
标记悬停在问题下方,直到出现一个黑框,然后单击其中的信息链接,来访问我们的JSF wiki页面)。欢迎您。是的,BalusC的博客是学习JSF时首先要看的地方
11:45:47,704 WARN  [lifecycle]   executePhase(PROCESS_VALIDATIONS 3,com.sun.faces.context.FacesContextImpl@23ccb9) threw exception
javax.faces.FacesException: /pages/login.jsp(31,2) '#{employee.username}' Target Unreachable, identifier 'employee' resolved to null
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:108)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.jasper.el.JspPropertyNotFoundException: /pages/login.jsp(31,2) '#{employee.username}' Target Unreachable, identifier 'employee' resolved to null
    at org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:81)
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:934)
    at javax.faces.component.UIInput.validate(UIInput.java:860)
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
    at javax.faces.component.UIInput.processValidators(UIInput.java:666)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
    at javax.faces.component.UIForm.processValidators(UIForm.java:229)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
    at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
    ... 21 more
11:45:47,704 ERROR [[Faces Servlet]]   Servlet.service() for servlet Faces Servlet threw exception
org.apache.jasper.el.JspPropertyNotFoundException: /pages/login.jsp(31,2) '#{employee.username}' Target Unreachable, identifier 'employee' resolved to null
    at org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:81)
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:934)
    at javax.faces.component.UIInput.validate(UIInput.java:860)
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
    at javax.faces.component.UIInput.processValidators(UIInput.java:666)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
    at javax.faces.component.UIForm.processValidators(UIForm.java:229)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
    at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
    at java.lang.Thread.run(Unknown Source)
<h:dataTable value="#{userData.employees}" var="employee"></h:dataTable>
<h:inputText id="username"  value="#{employee.username}">