1

アクションを追加したいのですが、追加するstruts.xmlとWebアプリが機能しなくなり、理由がわかりません。ここに私のWebアプリの詳細を投稿します。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ILIMobileLeborgne</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <filter>
   <filter-name>struts2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

struts.xml(Eclipseのsrcフォルダー内):

<?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" />
<constant name="struts.custom.i18n.resources" value="ilimobile" />

<package name="ilimobile" namespace="/" extends="struts-default">

    <action name="index">
        <result>/index.jsp</result>
    </action>

    <action name="registerIllimite">
        <result>/registerIllimite.jsp</result>
    </action>

      <!-- When i try to do add the following action my app doesn't working, the browser said me that the ressource asked is unavailable and when i delete it my (little) app works correctly -->
    <action name="registerClientInfo"  class="action.SubscribeAction">
        <result name="success">/paiement.jsp</result>
    </action>

</package>

</struts>

私のSubscribeAction(ソースフォルダーのアクションパッケージ内):

package action;

import model.*;

import com.opensymphony.xwork2.ActionSupport;

public class SubscribeAction extends ActionSupport {
private Client client;
private String abonnement;

public String getAbonnement() {
    return abonnement;
}

public void setAbonnement(String abonnement) {
    this.abonnement = abonnement;
}

@Override
public String execute() throws Exception {
    // TODO Auto-generated method stub
    return SUCCESS;
}

public Client getClient() {
    return client;
}

public void setClient(Client client) {
    this.client = client;
}
}

そして、定義されたアクションを使用する私のJSPページ:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> 
<%@ 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>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Insert title here</title>
 </head>
 <body>
<s:form action="registerClientInfo">
    <s:textfield key="client.nom"/>
    <s:textfield key="client.prenom"/>
    <s:textfield key="client.email"/>
    <s:textfield key="client.adresse"/>
    <s:textfield key="client.ville"/>
    <s:textfield key="client.cp"/>

    <s:submit/>
</s:form>
 </body>
</html>

追加情報が必要な場合は私に聞いてください。しかし、私のアプリが機能したくない理由がわかると思います:/ちょっとしたエラーだと確信していますが、見つかりません...

みんなありがとう、そして新年あけましておめでとうございます:)

(英語で申し訳ありませんが、私はフランス人の学生です^^)

編集:私はここにEclipseスタックトレースを投稿します。これは、彼が私のアクションクラスを見つけることができないことを示していますが、理由はわかりません:/先生が作成した支柱の例があり、彼が作成したとは思わないEclipseでTomcatサーバーを使用してアプリをデプロイするための追加の手順

スタックトレース:

Unable to load configuration. - action - file:/home/blackmario/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/ILIMobileLeborgne/WEB-INF/classes/struts.xml:20:68
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:429)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:471)
    at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)


Caused by: Action class [action.SubscribeAction] not found - action - file:/home/blackmario/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/ILIMobileLeborgne/WEB-INF/classes/struts.xml:20:68
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:480)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:424)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:541)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:290)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:112)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:239)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
    ... 18 more
4

3 に答える 3

1

したがって、そのアクションを追加すると、アプリケーションが起動しないように聞こえますね。以前に機能したものでさえ、何も機能しません。したがって、使用しているサーブレットコンテナのログを確認する必要があります。ログがどこにあるかを見つけて、それらに精通することほど基本的なことはありません。

ログを見ると、どちらかがわかると思います

1)struts.xmlの構文が正しくなく、解析しようとするとアプリケーションが失敗するというエラー。

また

2)そのアクションのクラスファイルがアプリケーションのクラスパス上にないため、ClassNotFoundException。この場合、そのアクションのクラスファイルが実際にWARファイルのWEB-INF/libまたはWEB-INF/classesディレクトリに配置されていることを確認してください。ここで、Webアプリケーションのクラスローダーがクラスファイルを検索します。これについてよく知らない場合は、Javaサーブレットについてもっと読む必要があります。

これらは両方とも、アプリケーションが正常に起動しない原因となる可能性があります。ログを確認する必要があります。ほとんどの場合、アプリケーションに特定の問題があったことを通知します。このフォーラムでその特定の問題について質問すると、非常に役立つ回答が得られます。そうでなければ、私は一種の推測です。

于 2012-12-31T21:01:38.920 に答える
0

変更してみてください

<action name="registerClientInfo"  class="action.SubscribeAction">
    <result name="success">/paiement.jsp</result>
</action>

<action name="registerClientInfo"  class="SubscribeAction">
    <result name="success">/paiement.jsp</result>
</action>
于 2013-01-03T15:06:59.520 に答える
0

デフォルトでは、拡張機能は、拡張するパッケージ.actionによって使用されます。struts-defaultブラウザにを配置するときはurl、正しいを使用していることを確認してくださいurl

于 2012-12-31T19:20:36.847 に答える