我在登录页面用一个用户登录,跳转的时候报错,报错为
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 。

解决方案 »

  1.   

    先问一下 userBiz这个是什么?
      

  2.   

    userBiz是父类的一个属性,调用方法的,我再重新贴吧
      

  3.   

    action方法:
    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;
    }}
      

  4.   

    错误在多贴一点:
    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 
      

  5.   

    能够否将你的log分行
    这样看上去很累哎
      

  6.   

    很不幸 还是没看到哪来的userBiz
      

  7.   

    userBiz在这个类中package org.forever.leave.action;import javax.annotation.Resource;
    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;
    }}
      

  8.   

    你就说userBiz作用是什么?是service?dao?
      

  9.   

    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.你用了 代理。???  也是用了 过滤器???貌似 是你的 代理 没有 指向正确的 target,。目标对象啊。。

    看一下你有没有 注入。
      

  10.   

    可能是你的SQl语句写的又问题,去看看