问题描述
- struts2把Action配成login就报错,配成其他的就不会,这是为何?
- jsp代码,就是在body上加个表单,表单内容如下:
<form action=""login.action"" method=""post""> <table> <tr> <td>用户名:</td> <td><input type=""text"" name=""user.username""></td> </tr> <tr> <td>密码:</td> <td><input type=""password"" name=""user.password""></td> </tr> <tr> <td><input type=""reset"" value=""重填""></td> <td><input type=""submit"" value=""登录""></td> </tr> </table> </form>
然后是Action
public class LoginAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private User user; @Override public String execute() throws Exception { if(""zhangsan"".equals(user.getUsername())&&""123"".equals(user.getPassword())) { System.out.println(""SUCCESS 结果""); return SUCCESS; } else { System.out.println(""error结果""); return ERROR; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
再然后是struts2的XML文件:
<?xml version=""1.0"" encoding=""UTF-8"" ?><!DOCTYPE struts PUBLIC ""-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"" ""http://struts.apache.org/dtds/struts-2.1.dtd""><struts> <package name=""default"" extends=""struts-default""> <action name=""login"" class=""com.action.LoginAction""> <result name=""success"">/success.jsp</result> <result name=""error"">/error.jsp</result> </action> </package></struts>
最后是一个javabean
public class User implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
error.jsp与success.jsp随便写就好,然后运行就一直报No result defined for action com.action.LoginAction and result 的错误,只要把struts.xml文件跟上面给出的jsp form里的login改成其他任意名字,例如:hhh之后,就正常运行不再报错。这是为何?求各位帮个忙解答下,感激不尽
解决方案
web.xml中struts配置的问题。祝好!
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
解决方案二:
你配置文件里默认的就是以[.action]结尾的;如果你想改结尾你继续往后学就知道了;
所以你将login.action改成login试试。
如果回答对您有帮助请采纳
解决方案三:
把web.xml里的*.action改成/*即可,真实体验
解决方案四:
在LoginAction类下的实例化User对象那里,private User user=new User(),然后在User类下添加一个无参构造方法,public User(){},这样试一下看行吗?
解决方案五:
我理解错了,看你报的错误,貌似是因为没有为action和result定义一个result,可能是因为少添加了一个result,你试着在LoginAction类中的execute方法下添加一个return LOGIN,然后在struts.xml文件中的action下添加一行代码:/success.jsp试下,如果还不行可能是其它问题!
解决方案六:
在struts.xml配置文件添加大代码为:
<result name=""login"">/sucess.jsp</result>
解决方案七:
我也遇到过这种情况,你把这个jsp页面复制一个,然后删除这个,复制后的页面就可以正常运行了。经验
解决方案八:
/WEB-INF/jsp/user/userlist.jsp
看看你action中的name加了没有?
解决方案九:
问题已经解决,自己给个答案,这个问题主要是因为用了struts2.1所引起的。在2.1中有一个插件struts2-convention-plugin-2.1.8.jar,这个插件是2.1版本中新添加的默认核心包,这个插件是实现Struts2的零配置,但是这样问题就来了,如果引入就必须引入namespace命名空间,否则就会出现刚才的No result defined for action的异常。所以在struts.xml配置文件里,给package配置一个命名空间namespace=“/”即可。