Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts 2-HTTP状态404-没有为操作定义结果_Java_Jsp_Struts2_Http Status Code 404_Struts2 Config Browser - Fatal编程技术网

Java Struts 2-HTTP状态404-没有为操作定义结果

Java Struts 2-HTTP状态404-没有为操作定义结果,java,jsp,struts2,http-status-code-404,struts2-config-browser,Java,Jsp,Struts2,Http Status Code 404,Struts2 Config Browser,我正在尝试开发一个Struts2应用程序,在该应用程序中,单击一个超链接就会调用一个操作,该超链接使用Struts操作映射将用户指向hello.jsp。我得到以下错误: HTTP Status 404 - No result defined for action com.manaar.action.HelloAction and result success 我的档案如下。我的地图看起来很整齐。我也查看了这里的其他帖子,但似乎找不到这个问题的原因或解决方案。非常感谢您的建议。非常感谢,J in

我正在尝试开发一个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>
<!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>
/*
 * 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;
}
}

HelloAction.java

<%@ 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>
<!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>
/*
 * 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;
}
}

我想你错过了在他的行动中写方法“wateva”。因此,要么编写它来代替execute,要么从struts映射中删除它

<struts>
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
    <action name="hello" class="com.manaar.action.HelloAction">
        <result name="success">/hello.jsp</result>
    </action>
</package>

/hello.jsp
您可以使用一个。如果您希望在浏览器中查看配置以及如何将操作映射到URL,则此选项非常有用

实际上,问题的原因是您使用了。如果您将
struts2-convention-plugin-2.3.x.jar
放入
WEB-INF/lib
中,则会使用它。安装后,它会扫描在
struts plugin.xml
中定义的包,并根据约定创建一个附加到
struts.xml
配置的包。除了您的操作符合插件使用的规则外,还为类
HelloAction
创建了操作
“hello”
,但不幸的是,它没有结果
“success”
。要将此结果添加到操作中,应在类上使用
@result
注释,或使用
@ResultPath
注释指定结果的路径,而不是默认的
WEB-INF/content
。如果应用
struts.convention.result.path
配置设置,也可以执行相同的操作

@Result(name = SUCCESS, location = "/hello.jsp")

还要注意的是,您在
struts.xml
中为动作
“hello”
定义的映射意义较小,除非它映射到指定的方法。JSP的名称应该是
index.JSP

的输入错误,请尝试在HelloAction中创建一个方法wateva并从该方法返回成功,或者您可以在struts.xml中调用execute方法,而不是我尝试完全删除方法wateva的内容,我得到了相同的错误。然后我尝试从struts.xml调用execute。同样的错误,非常感谢。我正在深入阅读配置浏览器以及如何使用。我还删除了打字错误方法(wateva),但仍然得到相同的错误。如果我想在我的类中注释@Result,我应该把注释放在哪里?还有我的类中需要什么import语句。非常感谢。您可以将其放在用于映射操作的类或方法上,或者放在属性
结果
中的
@action
注释内,也可以放在
@results
注释正文中。注释在包<代码> org .Apache .Struts2.约定>注释>代码中,它与约定插件一起出现。还考虑进一步阅读第二个链接,有很多示例如何使用注释来配置动作映射。我可以注释如下:导入com.opensymphony.xwork2.Action;导入静态com.opensymphony.xwork2.Action.SUCCESS;导入org.apache.struts2.convention.annotation.Result@结果公共类HelloAction实现操作{//类的其他部分。当我这样做时,我得到一个错误,即注释没有类型或位置参数,但我似乎无法将其添加到类的任何其他部分。不要在注释中编写太多代码,编辑您的帖子,并在编辑标记后添加详细信息。我从struts映射中删除了wateva,但这并没有解决问题