2017-02-14 8 views
0

私はサイト全体を検索しましたが、何も示唆されていませんでした! 私はspring-mvcとangularJSアプリケーションを作成しようとしています。これは私のプロジェクト構造である:spring mvcが.htmlファイルにアクセスできない

angularState 
-src/main/java/it.controller.DefaultController.java 
-src/main/webapp 
--index.jsp 
--WEB-INF 
---dispatcher-servlet.xml 
---web.xml 
---static 
----default.html 

ので、私のweb.xmlに私が持っている:ディスパッチャ-servlet.xmlで

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/dispatcher-servlet.xml 
    </param-value> 
</context-param> 

を:index.jspの中

<context:component-scan base-package="it.controller"></context:component-scan> 
<mvc:annotation-driven /> 
<context:annotation-config /> 
<mvc:resources location="/WEB-INF/static/" mapping="/static/**" /> 

<% response.sendRedirect("default"); %> 

コントローラ内:

@Controller 
@RequestMapping("/default") 
public class DefaultController { 
public String showDefault(){ 
    return "/static/default.html"; 
} 
} 

私はいつもjspを使いました。 私は試しました -mvc:default-servlet-handler -InternalResourceViewResolver接頭辞「/ WEB-INF/static」と接尾辞「.html」、または末尾に接尾辞void -InternalResourceViewResolver voidと "/WEB-INF/static/default.html"を返すコントローラメソッド 何もありません! 何もdefault.htmlを示していません。なぜその.htmlファイルがとても複雑なのですか?

+0

ビューの解決方法はどのように設定されていますか?コンテキストXMLのこの部分を提供する – Andremoniy

+1

/」を「/app/*」に変更し、URLにappを追加してください。 。 – NewUser

+0

@RequestMappingを変更しようとしましたか? '@RequestMapping(value ="/default ")' – Mike

答えて

0

ここでは、グーグルの誰かのために、答えがあります。 問題はかなりシンプルでした:私が間違っていたのはコントローラメソッドでした。元のコントローラメソッドは:

@Controller 
@RequestMapping("/default") 
public class DefaultController { 
    public String showDefault(){ 
     return "/static/default.html"; 
    } 
} 

正しいバージョンでなければなりません:

@Controller 
@RequestMapping("/default") 
public class DefaultController { 
@RequestMapping(method=RequestMethod.GET) 
    public String showDefault(){ 
     return "/static/default.html"; 
    } 
} 

すべてのページがGETへのアクセスを持っている必要がありますので、全てよりも、ホームページにアクセス! そのメソッドの@RequestMappingがないため、試したすべての設定で.htmlファイルにエラーが表示されました。私はsaydとして、.htmlファイルにのみ、彼らは静的リソースをしているので、

<mvc:resources location="/WEB-INF/static/" mapping="/static/**" /> 

を設定する必要があり、彼らは、サーブレットの助けを必要としません。これが誰かを助けてくれることを願っています。

1

これは、通常、* .jspスタイルのuriパターンがサーブレットコンテナによって処理され、あなたのケースでは* .htmlがコンテナによって処理されておらず、パスがSpring MVCに委譲されているためですこれらの拡張機能を使用すると、ビューリゾルバの交渉内容は、(私はあなたが使用している可能性が推測InternalResourceViewResolverの代わりにも使用することができ

<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

それとも

のconf/web.xmlにコードの下に試すことができますクイックフィックスとして をレンダリングthis)は、 "mediaType"で宣言されたファイル拡張子に基づいて適切なビューを返します「s」プロパティ) 例

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
      <property name="order" value="1" /> 
      <property name="mediaTypes"> 
      <map> 
       <entry key="json" value="application/json" /> 
       <entry key="html" value="text/html"/> 
      </map> 
      </property> 
+0

最初の解決策は、「DispatcherServletのURI [/ angularState/default] 'dispatcher' " あなたの2番目の解決策は私にmediaTypesのセッターに関するエラーを与えたので、次のように調整しました: http://stackoverflow.com/questions/37304055/contentnegotiatingviewresolver-mediatypes-error-after-upgrading-to -spring-4-2 それから最初の試行と同じエラーが出ました。 – Fausto

+0

あなたのエラーはのDispatcherServletを変更する必要があるalso.Below .htmlのページの要求を処理しようとしていることを示唆しているのディスパッチャ /* /.controllers .controllerのように異なる拡張子を持つ呼び出しコントローラに試し、サーブレットマッピングを更新してください –