2012-07-14 46 views
0

關於這個我知道的另一個問題,但讓我只是說我看了一切或關於。所以,我正在構建我的Struts 2項目的結構。我使用Struts 2.3.4,JBoss 7.1和Eclipse Indigo。我還將所有必需的jar包含到我的項目中。問題是,當我運行我的應用程序(添加項目到JBoss,運行在服務器上),然後轉到 「http://localhost:8080/booxstore/」 我得到這個:有沒有行動映射等。在Struts 2

Etat HTTP 404 - There is no Action mapped for namespace [/] and action name [] associated with context path [/booxstore] 

Project

我的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>Booxstore</display-name> 

    <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> 
    <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

</web-app> 

我的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="false" /> 
    <package name="pages" namespace="/pages" extends="struts-default"> 
     <action name="afficher" class="com.booxstore.controller.DisplayAction" > 
      <result name="SUCCESS">/center.jsp</result> 
     </action> 
    </package> 
</struts> 

我的行動:

/** 
* 
*/ 
package com.booxstore.controller; 

import com.opensymphony.xwork2.Action; 
import com.opensymphony.xwork2.ActionSupport; 

public class DisplayAction extends ActionSupport { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 8199854978749642334L; 

    public String execute() throws Exception{ 
     System.out.println("IN"); 
     return Action.SUCCESS; 
    } 
} 

我的JSP只是純文本並且已經導入了struts 2標籤。基本上不管我做什麼我都無法獲得資源。如果我去「http://localhost:8080/booxstore/」或「http://localhost:8080/booxstore/DisplayAction」,我會得到「沒有映射的動作」,如果我試圖直接訪問jsp,我得到了404。請注意我的戰爭已部署並在服務器上啓用。

回答

1

index.jspWebContent文件夾下,移動pages文件夾WEB-INF,然後更改與struts.xml中:

<struts> 
<constant name="struts.devMode" value="false" /> 
<package name="pages" extends="struts-default"> 
    <action name="afficher" class="com.booxstore.controller.DisplayAction" > 
     <result name="SUCCESS">/WEB-INF/pages/center.jsp</result> 
    </action> 
</package> 
</struts> 

我覺得現在的問題是,應用程序沒有發現,你把在JSP中配置文件。並且META-INF文件夾不是放置您的jsps頁面的地方,如果您不想讓它們公開,WEB-INF更適合用於此目的。

+1

現在證明這一點,沒有用'命名空間=「/頁」' – Pigueiras 2012-07-14 22:00:49

+0

指數是確定現在的行動結果是「不確定」,但成功的。錯誤的路徑? – LMeyer 2012-07-14 22:04:51

+0

您必須以「http:// localhost:8080/afficher.action」的形式訪問該操作,因爲這是該操作的名稱。 – Pigueiras 2012-07-14 22:07:11