2016-11-08 1 views
1

Когда я пытаюсь получить значения из класса, которые были установлены в jsp, показано значение null. наблюдаетсяНевозможно установить значения формы jsp для переменных класса

После ошибки в режиме разработчика:

ERROR ParametersInterceptor Developer Notification (набор struts.devMode ложь, чтобы отключить это сообщение): Неожиданное исключение пойманной установки 'имя' на «класса org.ravi. EmployeeAction: установка Error 'имя' выражение со значением 'т'

Ниже приведены мои различные страницы

struts.xml

<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
    <constant name="struts.devMode" value="true" /> 
    <package name="default" extends="struts-default"> 
     <action name="addEmployeeAction" class="org.ravi.EmployeeAction"> 
      <interceptor-ref name="params" /> 
      <interceptor-ref name="modelDriven"/> 
      <result name="success">/Add.jsp</result> 
     </action> 
     <action name="EmployeeAction" class="org.ravi.EmployeeAction" method="execute"> 
      <interceptor-ref name="params" /> 
      <interceptor-ref name="modelDriven"/> 
      <result name="success">/index.jsp</result> 
     </action> 
    </package> 
</struts> 

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1" import="java.util.*,java.io.*"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@taglib uri="/struts-tags" prefix="s"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<body> 

    <s:form action="Add.jsp" name="addForm"> 
     <table border="1" cellpadding="5"> 
      <tr> 
       <th>Select</th> 
       <th>EmpID</th> 
       <th>Name</th> 
       <th>City</th> 
       <th>DoB</th> 
      </tr> 

      <tr> 
       <th><input type="radio" name="record" 
        onClick="radioValidate(this, 'record')" value="%{var}"> 
       </th> 
       <th><s:property value="empid"/></th> 
       <th><s:property value="name"/></th> 
       <th><s:property value="city"/></th> 
       <th><s:property value="dob"/></th> 
    </s:form> 
</body> 
</html> 

Add.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@taglib uri="/struts-tags" prefix="s"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
    <h1>Add New User</h1> 
    <s:form action="EmployeeAction" > 
    <s:textfield label="Emp Id" name="empid" /> 
    <s:textfield label="Name" name="name" /> 
    <s:textfield label="City" name="city" /> 
    <s:textfield label="DoB" name="dob" />   
    <s:submit /> 
    </s:form> 
</body> 
</html> 

EmployeeAction.java

package org.ravi; 

import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.ModelDriven; 

public class EmployeeAction extends ActionSupport implements ModelDriven<Employee> { 
    private static final long serialVersionUID = -8136507522861159378L; 

    private Employee employee=new Employee(); 

    public Employee getEmployee() 
    { 
     return employee; 

    } 

    public void setEmployee(Employee employee) 
    { 
     this.employee=employee; 
    } 

    public String execute() throws Exception 
    { 
     return SUCCESS; 
    } 

    @Override 
    public Employee getModel() 
    { 
     return employee; 
    } 
} 

Employee.java

package org.ravi; 

import java.io.Serializable; 

public class Employee implements Serializable{ 

    static final long serialVersionUID = 1L; 
    private String empid; 
    private String name; 
    private String city; 
    private String dob; 

    public void setempid(String empid) { 
     this.empid = empid; 
    } 

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

    public void setcity(String city) { 
     this.city = city; 
    } 

    public void setdob(String dob) { 
     this.dob = dob; 
    } 

    public String getempid() { 
     return this.empid; 
    } 

    public String getname() { 
     return this.name; 
    } 

    public String getcity() { 
     return this.city; 
    } 

    public String getdob() { 
     return this.dob; 
    } 


} 

ответ

2

Вы совершить несколько ошибок, худший, что

  • вы генерируете методы получения и установку вручную (много бесполезной работы), и вы также делаете это неправильно: первую букву имя переменной должно быть капитализированы:

    setName( вместо setname( для переменной name.

    Вы должны (для простоты и согласованности) и сделать это для каждого слова из ваших переменных с более чем одним словом:

    setEmpId( для переменной empId.

    Вы также должны избегать избыточности, когда это возможно. Если у вас есть поле идентификатора в классе Employee, просто назовите его id, а не empId ... если он внутри Emp, очевидно, что это emp id, а не что-то еще id.

  • Используйте ModelDriven только в том случае, если вам нравится боль. Для любой другой цели это так же полезно, как колбаса в кармане, когда вы сталкиваетесь с пачкой голодных бродячих собак.

  • Использовать HTML5 DTD <!DOCTYPE html> также, если вы ориентируетесь на старые браузеры, в настоящее время нет необходимости использовать 4.01.

  • Никогда не называйте JSP напрямую, как вы делаете в своей первой форме, всегда проходите сначала действия.

Начните с этого. Там еще много.


Должен прочитать

+1

И перехватчик стека. –

+1

Для этого необходимо, чтобы ссылка «Bean» и «CamelCase» была полной. – AxelH

+0

Я добавил их так много раз:/Я сделал это сейчас тоже @AxelH, ради полноты ... :) –

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

Вы должны назвать все это правильно, т.е. SetName (имя String) же для setEmpId и так далее. Struts не могут найти ваши геттеры/сеттеры, потому что они не следуют соглашениям об именах.

Смежные вопросы