希望有人能够给出提示,在哪里寻找问题的根源。
班级登录操作
@Namespace("/")
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
@Override
@Action(value = "/welcome", results = { @Result(name = SUCCESS, location = "/WEB-INF/content/welcome.jsp") })
When I exectute my index.jsp to execute welcome.jsp didn't work.
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Login Page</title>
</head>
<body>
<h3>Welcome to Struts 2</h3>
<s:form action="home">
<s:textfield name="username" label="User Name"></s:textfield>
<s:textfield name="password" label="Password" type="password"> </s:textfield>
<s:submit value="Login"></s:submit>
</s:form>
</body>
</html>
欢迎.jsp
enter code here
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=IUTF-8">
<title>Welcome To Struts 2</title>
</head>
<body>
<h3>
Welcome
<s:property value="username"></s:property>
!
</h3>
</body>
结果 Struts 问题报告
Struts 检测到未处理的异常:
留言:
There is no Action mapped for namespace [/] and action name [home] associated with context path [/struts].
在 Struts2 中,您可以使用
s:form
标签的 action
和 namespace
属性将表单映射到操作配置。
通常,action 属性接受操作名称,但它可以包含 URL。表单标签由模板呈现为 HTML
form
,其中操作属性必须是 URL。
Struts 正在获取操作名称并生成 URL。可以在浏览器中看到源代码。当发出请求时,Struts2 使用请求 URI 来查找操作映射,如此处所述。
通常 404 错误会导致服务器上缺少与请求的 URI 对应的操作配置。当您提交表单时,会发出请求并请求资源,但找不到操作配置,因此 Struts2 返回 404 错误。
如果您使用约定或休息插件,则不需要使用注释,但注释始终允许手动覆盖默认值。
默认结果路径是
/WEB-INF/contents/
,动作名称不带斜杠,所以你可以使用注释:
@Action(value = "welcome", results = @Result(location = "welcome.jsp") )
您可以从this答案中找到在线资源的参考。
教程中的内容阅读本教程。
解决方案。
在我的index.jsp中,我在标签action中写了“home”,形式action =“home”,正确的是Action中的相同名称。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Login Page</title>
</head>
<body>
<h3>Welcome to Struts 2</h3>
<s:form action="home"> **The correct is "welcome"**
<s:textfield name="username" label="User Name"></s:textfield>
<s:textfield name="password" label="Password" type="password"> </s:textfield>
<s:submit value="Login"></s:submit>
</s:form>
</body>
</html>
在我的 LoginAction 中我使用了 value ="/welcome"。
package web.actions;
@Action(value = "/welcome", results = { @Result(name = SUCCESS, location = "/WEB-INF/content/welcome.jsp") })
public String execute() throws Exception {
return SUCCESS;
}
讯息很清楚。
没有映射与上下文路径 [/struts] 关联的命名空间 [/] 和操作名称 [home] 的操作。
但我只是在做很多例子时看到了这个错误。