0

私はストラット 2 の研究を始めています。ここの例に従いました。

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
   <package extends="struts-default">
      <action name="hello" 
            class="com.tutorialspoint.struts2.HelloWorldAction" 
            method="execute">
            <result name="success">/HelloWorld.jsp</result>
      </action>
   </package>
</struts>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>HelloWorld3</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
   <h1>Struts2</h1>
   <form action="hello">
      <label for="name">Please enter your name</label><br/>
      <input type="text" name="name"/>
      <input type="submit" value="Say Hello"/>
   </form>
</body>
</html>

HelloWorldAction.java

package com.tutorialspoint.struts2;

public class HelloWorldAction{
   private String name;

   public String execute() throws Exception {
      return "success";
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

しかし、フォームを実行して送信すると、404 エラーが発生します。

type: Status report

message: /HelloWorld3/hello

description:The requested resource (/HelloWorld3/hello) is not available.

コンソールにエラーは発生しません。アクションクラスがマッピングされていないと思います。この種のエラーはすべての Struts 初心者に共通していることを知っていますが、昨日からこれをグーグルで検索していることを誓います。

struts.xml は /src/ 内にあります。また、WEB-INF/classes 内に配置しようとしましたが、まだ運がありません。

その中にEclipse GallileoとTomcat 6を使用しています。

返信は本当にありがたいです。

4

4 に答える 4

0

http://viralpatel.net/blogs/tutorial-create-struts-2-application-eclipse-example/

jar ファイルを含む Simple Struts 2 Example Demo を入手できます。

于 2013-03-27T13:30:11.407 に答える
0

エラーを避けるためにcommons-lang3.x.y.z jarとを追加commons-fileupload-x.y.z jarしますbuildpath'resource not available'

于 2013-03-24T13:47:30.860 に答える
0

残念ながら、 がチュートリアルweb.xmlの と同じではないことに気付きました。web.xmlまた、 でパッケージ名を指定するのを忘れていましたstruts.xml。これらを修正した後、コンソールでエラーが発生しました。

java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

この問題を解決するために、チュートリアルで追加する必要がある他の jar と一緒にディレクトリに追加commons-lang3-x.yしました。WEB-INF/lib

于 2012-07-25T04:00:35.143 に答える
0

クラスは ActionSupport クラスまたは Action Interface を拡張でき、それのみがアクション クラスになります。また、デフォルトで明示的に execute メソッドを呼び出す必要はありません。execute メソッドが呼び出されます。オーバーライドしている場合は、そのメソッド名に言及する必要があります。

また、ActionSupport クラスの使用は必須ではありません。これは基本的に、すぐに使用できる多くの機能を提供するヘルパー クラスですが、同時に Struts2 フレームワークはこのクラスの使用を要求しません。必要なのは、戻り値の型が String のアクション クラスのエントリ メソッドだけであり、一般的な例外をスローします

検証や国際化に加えて、このクラスはアクション レベル エラーなどの他の多くの機能も提供します。

<action name="hello" 
            class="com.tutorialspoint.struts2.HelloWorldAction">


    package com.tutorialspoint.struts2;

    public class HelloWorldAction extends ActionSupport{
       private String name;

       public String execute() throws Exception {
          return "success";
       }

       public String getName() {
          return name;
       }

       public void setName(String name) {
          this.name = name;
       }
    }
于 2012-07-25T02:25:05.150 に答える