java – Struts 2 – HTTP状态404 – 没有为操作定义结果
作者:互联网
我正在尝试开发一个Struts2应用程序,其中在单击超链接时调用操作,该超链接使用Struts动作映射将用户定向到hello.jsp.我收到以下错误:
HTTP Status 404 - No result defined for action com.manaar.action.HelloAction and result success
我的文件如下.我的映射看起来像是按顺序排列.我也在这里检查了其他帖子,但似乎无法找到这个问题的原因或解决方案.非常感谢任何建议.非常感谢,J
的index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title><s:text name="app.title" /></title>
<link rel="stylesheet" href="mystyle.css" type="text/css" />
</head>
<body>
<center>
<h2>
Struts 2 Actions
</h2>
<br>
<br>
Welcome
<s:property value="#session.user" default="Guest" />!
<s:if test="#session.user!=null">
<s:url id="logout" action="logout" />
| <s:a href="%{logout}">Logout</s:a> |
</s:if>
<br>
<table cellspacing="5" width="180">
<tr bgcolor="#f0edd9" height="25" align="center">
<td>
<s:url id="hello" action="hello"/>
<s:a href="%{hello}">Hello Action</s:a>
</td>
</tr>
<tr bgcolor="#f0edd9" height="25" align="center">
<td>
<s:a href="add_user.jsp">Add User</s:a>
</td>
</tr>
<tr bgcolor="#f0edd9" height="25" align="center">
<td>
<s:a href="user.jsp">View Users</s:a>
</td>
</tr>
<tr bgcolor="#f0edd9" height="25" align="center">
<td>
<s:a href="login.jsp">Login</s:a>
</td>
</tr>
</table>
</center>
</body>
</html>
struts.xml中:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
<action name="hello" class="com.manaar.action.HelloAction" method="wateva">
<result name="success">/hello.jsp</result>
</action>
</package>
HelloAction.java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.manaar.action;
import com.opensymphony.xwork2.Action;
import static com.opensymphony.xwork2.Action.SUCCESS;
public class HelloAction implements Action {
String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
/**
*
* @return
* @throws Exception
*/
@Override
public String execute() throws Exception {
setMessage("Hello From Struts!");
return SUCCESS;
}
}
解决方法:
您可以使用config-browser plugin.如果您想在浏览器中查看配置以及操作如何映射到URL,这将非常有用.
实际上,你使用convention-plugin的问题的原因.如果你把struts2-convention-plugin-2.3.x.jar放到WEB-INF / lib中,它就会被使用.安装后,它会扫描struts-plugin.xml中定义的包,并按约定创建一个额外的struts.xml配置.除了您的操作符合插件使用的规则之外,还为HelloAction类创建了操作“hello”,但遗憾的是它没有“成功”的结果.要将此结果添加到操作中,您应该在类上使用@Result注释,或使用@ResultPath注释指定结果的路径,而不是默认的WEB-INF / content.如果应用struts.convention.result.path配置设置,则可以执行相同的操作.
@Result(name = SUCCESS, location = "/hello.jsp")
另请注意,您在struts.xml中为动作“hello”定义的映射具有较少的含义,除非它映射到指定的方法. JSP的名称应该是index.jsp的拼写错误.
标签:java,http-status-code-404,struts2,jsp,struts2-config-browser 来源: https://codeday.me/bug/20191002/1842564.html