首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

【奇怪】Struts2 不能获取客户端【一部分】字段

2012-09-24 
【奇怪】Struts2 不能获取客户端【部分】字段有一个员工实体类:EmployeeJava codepublic class Employee imple

【奇怪】Struts2 不能获取客户端【部分】字段
有一个员工实体类:Employee

Java code
public class Employee implements java.io.Serializable {    // Fields    private static final long serialVersionUID = 5106663630382037556L;    private String sn;    private Position position;    private Department department;    private String password;    private String name;    private String status;    // Constructors    /** default constructor */    public Employee() {    }    // Property accessors    /**     * @return 工号     */    public String getSn() {        return this.sn;    }    public void setSn(String sn) {        this.sn = sn;    }    /**     * @return 职务     */    public Position getPosition() {        return this.position;    }    public void setPosition(Position position) {        this.position = position;    }    /**     * @return 部门     */    public Department getDepartment() {        return this.department;    }    public void setDepartment(Department department) {        this.department = department;    }        /**     * @return 密码     */    public String getPassword() {        return this.password;    }    public void setPassword(String password) {        this.password = password;    }        /**     * @return 姓名     */    public String getName() {        return this.name;    }    public void setName(String name) {        this.name = name;    }        /**     * @return 状态     */    public String getStatus() {        return this.status;    }    public void setStatus(String status) {        this.status = status;    }}

Action类
Java code
/** * 用户登录action * @author 北大青鸟 * @version 1.0 */public class UserAction extends ActionSupport {    private static final long serialVersionUID = 1L;    private final Log logger = LogFactory.getLog(getClass());    private Employee employee;    private EmployeeService employeeService;    /**     * 用户登录。     * @return     * @throws Exception     */    public String login() throws Exception {        Employee newEmployee = null;        try {            System.out.println(employee.getName());            employee.setPassword(new MD5(employee.getPassword()).compute());            newEmployee = employeeService.login(employee);            if (logger.isDebugEnabled()) {                logger.debug("---------------" + newEmployee.getName());            }        } catch (Exception e) {            e.printStackTrace();            logger.error(e.getMessage());        }        String ret = INPUT;        if (newEmployee == null) {            ret = INPUT;        } else {            ActionContext ac = ActionContext.getContext();            ac.getSession().put("employee", newEmployee);            //获取职员职务信息,并获得职务名称            String nameCn = newEmployee.getPosition().getNameCn();            if ("员工".equals(nameCn)) {                ret = "staff";                ClaimVoucher claimVoucher = new ClaimVoucher();                claimVoucher.setStatus(Constants.CLAIMVOUCHER_CREATED);                claimVoucher.setId(0);                ac.getSession().put("claimVoucher", claimVoucher);            } else if ("部门经理".equals(nameCn)) {                ret = "deptManager";            } else if ("总经理".equals(nameCn)) {                ret = "manager";            } else if ("财务".equals(nameCn)) {                ret = "cashier";            }        }        return ret;    }       //其他get/set方法省略}

登录页面login.jsp
<s:form action="login">
<s:textfield name="employee.name" label="用户名" />
<s:password name="employee.password" label="密码" />


<s:submit value="登录"></s:submit>
</s:form>
异常:
发现Action里面的employee对象的passowrd是客户端表单输入的值,name的值竟然是null,百思不得其解,异常信息如下:

java.lang.Exception: 登录过程错误!
at cn.jbit.jboa.service.impl.EmployeeServiceImpl.login(EmployeeServiceImpl.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy0.login(Unknown Source)
at cn.jbit.jboa.action.UserAction.login(UserAction.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)


at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)



[解决办法]

探讨

对于employee属性,有个get方法
public void setEmployee(Employee employee) {
this.employee = employee;
}
没set

热点排行