是不是struts配置的问题????急!!求救!!
想向各位高手们请教一下为何我每次运行时都没有执行AddPersionAction的呢?我运行add.jsp时,总是执行这个<result name="root">/WEB-INF/content/error.jsp</result>的,而没有进到action里,谁能说说是什么毛病啊!!!
----struts.xml文件----
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="resource" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.devMode" value="true" />
<package name="person" extends="struts-default">
<interceptors>
<interceptor name="adminAuth"
class="cn.edu.scnu.cs.scnupm.action.authority.AdminAuthorityInterceptor" />
<interceptor name="chiefAuth"
class="cn.edu.scnu.cs.scnupm.action.authority.ChiefAuthorityInterceptor" />
<interceptor name="instructorAuth"
class="cn.edu.scnu.cs.scnupm.action.authority.InstructorAuthorityInterceptor" />
<interceptor name="judgeAuth"
class="cn.edu.scnu.cs.scnupm.action.authority.JudgeAuthorityInterceptor" />
<interceptor name="personAuth"
class="cn.edu.scnu.cs.scnupm.action.authority.PersonAuthorityInterceptor" />
<interceptor name="studentAuth"
class="cn.edu.scnu.cs.scnupm.action.authority.StudentAuthorityInterceptor" />
<interceptor name="superAdminAuth"
class="cn.edu.scnu.cs.scnupm.action.authority.SuperAdminAuthorityInterceptor" />
<interceptor name="teacherAuth"
class="cn.edu.scnu.cs.scnupm.action.authority.TeacherAuthorityInterceptor" />
<interceptor-stack name="adminStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="adminAuth" />
</interceptor-stack>
<interceptor-stack name="chiefStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="chiefAuth" />
</interceptor-stack>
<interceptor-stack name="instructorStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="instructorAuth" />
</interceptor-stack>
<interceptor-stack name="judgeStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="judgeAuth" />
</interceptor-stack>
<interceptor-stack name="personStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="personAuth" />
</interceptor-stack>
<interceptor-stack name="studentStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="studentAuth" />
</interceptor-stack>
<interceptor-stack name="superAdminStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="superAdminAuth" />
</interceptor-stack>
<interceptor-stack name="teacherStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="teacherAuth" />
</interceptor-stack>
</interceptors>
<global-results>
<result name="business">/WEB-INF/content/error.jsp</result>
<result name="root">/WEB-INF/content/error.jsp</result>
<result name="login">/WEB-INF/content/login.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception"
result="root" />
</global-exception-mappings>
<action name="addPerson" >
<result>/person/add.jsp</result>
</action>
<action name="addPersonProc" class="cn.edu.scnu.cs.scnupm.action.person.AddPersonAction">
<result type="redirectAction">managePerson</result>
</action>
<action name="deletePerson" class="cn.edu.scnu.cs.scnupm.action.person.DeletePersonAction">
<result type="redirectAction">managePerson</result>
</action>
<action name="showPerson" class="cn.edu.scnu.cs.scnupm.action.person.ShowPersonAction">
<result name="success">/person/showUser.jsp</result>
</action>
<action name="updataPerson" class="cn.edu.scnu.cs.scnupm.action.person.ShowPersonAction">
<result>/person/updata.jsp</result>
</action>
<action name="updataPersonProc" class="cn.edu.scnu.cs.scnupm.action.person.UpdataPersonAction">
<result type="redirectAction">managePerson</result>
</action>
<action name="managePerson" class="cn.edu.scnu.cs.scnupm.action.person.ShowALLPersonAction">
<result>/person/managePerson.jsp</result>
</action>
<!-- =============================其他操作============================= -->
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
</package>
</struts>
------------------------------------------
-------AddPersonAction.java-------------
package cn.edu.scnu.cs.scnupm.action.person;
import cn.edu.scnu.cs.scnupm.action.base.PersonBaseAction;
import cn.edu.scnu.cs.scnupm.domain.Person;
import cn.edu.scnu.cs.scnupm.service.PersonService;
public class AddPersonAction extends PersonBaseAction{
private Person person;
private static final long serialVersionUID = 1L;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
private PersonService personService;
public PersonService getPersonService() {
return personService;
}
public void setPersonService(PersonService personService) {
this.personService = personService;
}
private Integer id;
private String account;
private String name;
private String password;
private String sex;
private String grade;
private String major;
private String position;
private int type;
private String introduction;
private String telephone;
private String address;
private String email;
public void setId(Integer id)
{
this.id=id;
}
public Integer getId()
{
return id;
}
public void setAccount(String account)
{
this.account=account;
}
public String getAccount()
{
return account;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void setPassword(String password)
{
this.password=password;
}
public String getPassword()
{
return password;
}
public void setPosition(String position)
{
this.position=position;
}
public String getPosition()
{
return position;
}
public void setType(int type)
{
this.type=type;
}
public int getType()
{
return type;
}
public void setMajor(String major)
{
this.major=major;
}
public String getMajor()
{
return major;
}
public void setGrade(String grade)
{
this.grade=grade;
}
public String getGrade()
{
return grade;
}
public void setSex(String sex)
{
this.sex=sex;
}
public String getSex()
{
return sex;
}
public void setIntroduction(String introduction)
{
this.introduction=introduction;
}
public String getIntroduction()
{
return introduction;
}
public void setTelephone(String telephone)
{
this.telephone=telephone;
}
public String getTelephone()
{
return telephone;
}
public void setAddress(String address)
{
this.address=address;
}
public String getAddress()
{
return address;
}
public void setEmail(String email)
{
this.email=email;
}
public String getEmail()
{
return email;
}
public String execute() throws Exception {
Person person=new Person();
person.setId(id);
person.setName(name);
person.setPassword(password);
person.setSex(sex);
person.setMajor(major);
person.setAccount(account);
person.setGrade(grade);
person.setTelephone(telephone);
person.setType(type);
person.setAddress(address);
person.setPassword(password);
person.setPosition(position);
person.setIntroduction(introduction);
person.setEmail(email);
//调用业务逻辑组件保存该用户
if(personService.addPerson(person, id)){
return SUCCESS;
}else{
addActionError("添加用户失败!");
return ERROR;
}
}
}
--------------------------------------------
-------------add.jsp---------------
<%@page contentType="text/html;charset=gb2312"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>添加用户</title>
</head>
<body>
<center>
<h2>添加用户</h2>
<s:actionerror/>
<s:form action="addPersonProc">
<s:textfield label="用户名" name="name"></s:textfield>
<s:password label="密码" name="password"></s:password>
<s:textfield label="学院" name="major"></s:textfield>
<s:textfield label="年级" name="grade"></s:textfield>
<s:textfield label="类型" name="type"></s:textfield>
<s:textfield label="性别" name="sex"></s:textfield>
<s:textfield label="职位" name="position"></s:textfield>
<s:textfield label="地址" name="address"></s:textfield>
<s:textfield label="账号" name="account"></s:textfield>
<s:textfield label="邮箱地址" name="email"></s:textfield>
<s:textfield label="电话号码" name="telephone"></s:textfield>
<s:textfield label="简介说明" name="introduction"></s:textfield>
<s:submit value="提交"></s:submit>
<s:reset value="重置"></s:reset>
</s:form>
</center>
</body>
</html>
[解决办法]
楼主的问题是:为何我每次运行时都没有执行AddPersionAction的呢?我运行add.jsp时,总是执行这个<result name="root">/WEB-INF/content/error.jsp</result>;
这意思是能进这个action,但是为什么找的是root的这个result,是这问题吗?
这样的话是能进addPersonAction对吗,进debug看下 看返回的是哪个视图,是success还是error,没理由会返回roor的,可能是你拦截器拦截了。
就像二楼的那样 你配一个success的 别懒 看能不能到你<result type="redirectAction">managePerson</result>这个action
[解决办法]
<action name="addPersonProc" class="cn.edu.scnu.cs.scnupm.action.person.AddPersonAction">
<result type="redirectAction">managePerson</result>
</action>//这里你重定向到下面的action ,怎么没把下面的action代码贴出啦
<action name="managePerson" class="cn.edu.scnu.cs.scnupm.action.person.ShowALLPersonAction">
<result>/person/managePerson.jsp</result>
</action>
[解决办法]
楼主的实体类有没有注解或者在hibernate中配置。不配置的话很可能为空。
可以先DEBUG观察,看看ID是什么内容。
[解决办法]
另外action中的person setId
页面没传递 就加个限制吧、
以后要是add 和update 公用一个action
有限制就好点
//加个判断限制吧if(id != null ){ person.setId(id);}