我在登录页面用一个用户登录,跳转的时候报错,报错为
java.lang.reflect.InvocationTargetException 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......有人说与tomcat有关,我重装了tomcat6.0,我用Debug跟踪发现走到一般就不走了(走到红色部分就不走了),Action方法如下:
private static final long serialVersionUID = -5673164904640722565L;
private User user = new User();
public String loginUser() throws Exception{
log.info("UserAction.longinUser");
user = userBiz.getUser(user.getLoginName(), user.getPassword());
if(user == null){
return LOGIN;
}
return LEAVELIST;
}
@Override
public Object getModel() {
return user;
}对应映射文件如下:
private Integer userId;
private String userName;//用户名字
private String loginName;//登录名字
private String password;//登录密码
private String position;//职位
private Set<Leave> leaves = new HashSet<Leave>(0); // Constructors /** default constructor */
public User() {
} /** minimal constructor */
public User(String position) {
this.position = position;
} /** full constructor */
public User(String userName, String loginName, String password,
String position, Set<Leave> leaves) {
this.userName = userName;
this.loginName = loginName;
this.password = password;
this.position = position;
this.leaves = leaves;
}
getter and setter 。
java.lang.reflect.InvocationTargetException 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......有人说与tomcat有关,我重装了tomcat6.0,我用Debug跟踪发现走到一般就不走了(走到红色部分就不走了),Action方法如下:
private static final long serialVersionUID = -5673164904640722565L;
private User user = new User();
public String loginUser() throws Exception{
log.info("UserAction.longinUser");
user = userBiz.getUser(user.getLoginName(), user.getPassword());
if(user == null){
return LOGIN;
}
return LEAVELIST;
}
@Override
public Object getModel() {
return user;
}对应映射文件如下:
private Integer userId;
private String userName;//用户名字
private String loginName;//登录名字
private String password;//登录密码
private String position;//职位
private Set<Leave> leaves = new HashSet<Leave>(0); // Constructors /** default constructor */
public User() {
} /** minimal constructor */
public User(String position) {
this.position = position;
} /** full constructor */
public User(String userName, String loginName, String password,
String position, Set<Leave> leaves) {
this.userName = userName;
this.loginName = loginName;
this.password = password;
this.position = position;
this.leaves = leaves;
}
getter and setter 。
package org.forever.leave.action;import org.forever.leave.entities.User;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;@Controller("UserAction")
@Scope("prototype")
public class UserAction extends BaseAction{
private static final long serialVersionUID = -5673164904640722565L;
private User user = new User();
public String loginUser() throws Exception{
log.info("UserAction.longinUser");
user = userBiz.getUser(user.getLoginName(), user.getPassword());
if(user == null){
return LOGIN;
}
return LEAVELIST;
}
@Override
public Object getModel() {
return user;
}}
映射文件:
<hibernate-mapping>
<class name="org.forever.leave.entities.User" table="user_" catalog="jbpm" lazy="false">
<id name="userId" type="java.lang.Integer">
<column name="user_id" />
<generator class="native" />
</id>
<property name="userName" type="java.lang.String">
<column name="user_name" />
</property>
<property name="loginName" type="java.lang.String">
<column name="login_name" />
</property>
<property name="password" type="java.lang.String">
<column name="password" />
</property>
<property name="position" type="java.lang.String">
<column name="position" length="11" not-null="true" />
</property>
<set name="leaves" inverse="true">
<key>
<column name="user_id" not-null="true" />
</key>
<one-to-many class="org.forever.leave.entities.Leave" />
</set>
</class>
</hibernate-mapping>
实体类:
public class User implements java.io.Serializable { // Fields private Integer userId;
private String userName;//用户名字
private String loginName;//登录名字
private String password;//登录密码
private String position;//职位
private Set<Leave> leaves = new HashSet<Leave>(0); // Constructors /** default constructor */
public User() {
} /** minimal constructor */
// public User(String position) {
// this.position = position;
// } /** full constructor */
public User(String userName, String loginName, String password,
String position, Set<Leave> leaves) {
this.userName = userName;
this.loginName = loginName;
this.password = password;
this.position = position;
this.leaves = leaves;
} // Property accessors public Integer getUserId() {
return this.userId;
} public void setUserId(Integer userId) {
this.userId = userId;
} public String getUserName() {
return this.userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getLoginName() {
return this.loginName;
} public void setLoginName(String loginName) {
this.loginName = loginName;
} public String getPassword() {
return this.password;
} public void setPassword(String password) {
this.password = password;
} public String getPosition() {
return this.position;
} public void setPosition(String position) {
this.position = position;
} public Set<Leave> getLeaves() {
return this.leaves;
} public void setLeaves(Set<Leave> leaves) {
this.leaves = leaves;
}}
java.lang.reflect.InvocationTargetException 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
这样看上去很累哎
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
import org.forever.leave.biz.LeaveBiz;
import org.forever.leave.biz.UserBiz;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;public class BaseAction extends ActionSupport implements ModelDriven<Object>{ private static final long serialVersionUID = -4522508376651310198L;
protected static Log log = LogFactory.getLog(BaseAction.class);
protected ServletContext application = ServletActionContext.getServletContext();
protected HttpServletRequest request = ServletActionContext.getRequest();
protected HttpServletResponse response = ServletActionContext.getResponse();
@Resource
protected UserBiz userBiz;
@Resource
protected LeaveBiz leaveBiz;
protected static final String LEAVELIST = "leaveList";
/**
* 子类重写该方法
*/
public Object getModel() {
return null;
}}
看一下你有没有 注入。