关于No result defined for action org.action.StrutsAction and result success(三)
rg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
在网上寻了很久,查了很多资料,终于找到了自己错误的原因。实际上都是一个边边角角的错误,或是系统不兼容的错误。
我的struts.xml的配置文件
[html]
< xml version="1.0" encoding="UTF-8" >
还有hello.jsp和welcome.jsp文件
[
html]
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
[html]
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
hello !
最后就是StrutsAction文件
[java]
package org.action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class StrutsAction extends ActionSupport{
private String name;
public String getName() {
return name;
}
public String execute() throws Exception{
if(!name.equals("HelloWorld")){
Map request1=(Map)ActionContext.getContext().get("request");
request1.put("name",getName());
return SUCCESS;
}else{
return ERROR;
}
}
}
出现错误后,笔者对其中的jar包以及配置文件进行了详细的检查
问题就出现在了struts.xml这个文件上,网上说当在struts.xml文件中的action的 name属性要选择其他的字符串定义,不要占用了struts2的关键字-------“struts”。当然为什么会这样,笔者也不大了解,可能是规定吧。
可改了之后,问题依然存在,后来在网上发现了原因,就是jsp中的form表单中的代码,确认form表单的action和struts.xml中的action相对应。就是form中的action=“abc”,则struts.xml中,这两者要相同。
改正之后,程序终于可能正确的运行了。
[html]