2016-09-20 7 views
1

htmlでスプリングブートアプリケーションを作成しましたがエラーが発生しました "URI [/app.js] ]名前付きのDispatcherServletの 'DispatcherServletの'名前が 'dispatcherServlet'のDispatcherServletでURI [/app.js]を持つHTTP要求のマッピングが見つかりません

プロジェクト構造:

TeamTrack 
    --Src 
     --Main 
      --java 
      --com.tm.controller 
        --application 
        --CertificateController 
        --WebConfig 
      --resources 
      ---static 
       --app.js 
     --Test 

Application.java:

@SpringBootApplication 
@EnableAutoConfiguration 
@EntityScan("com.tm.vo") 
@EnableJpaRepositories("com.tm.repository") 
@EnableWebMvc 
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

Certif icateController.java

@EnableWebMvc 
@Controller 
public class CertificateController { 

    @Autowired 
    private certificateRepository certRep; 

    @RequestMapping(value = "/cert",method = RequestMethod.GET) 
    public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) { 
     model.addAttribute("name", name); 
     return "certificate"; 
    } 

    @RequestMapping(value = "/addCertificate", method = RequestMethod.POST) 
    public String addNewCertificate(@RequestParam String certName,@RequestParam String certProvider) 
    { 
     certificate cert =new certificate(); 
     cert.setCertificateName(certName); 
     cert.setCertificateProvider(certProvider); 

     certRep.save(cert); 
     return "/"; 
    } 
} 

WebConfig.java certificate.htmlで

@Configuration 
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class) 
public class WebConfig extends WebMvcConfigurerAdapter { 

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { 
      "classpath:/static/", "classpath:/static/css/", "classpath:/static/js/" }; 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     if (!registry.hasMappingForPattern("/static/**")) { 
      registry.addResourceHandler("/static/**").addResourceLocations(
        CLASSPATH_RESOURCE_LOCATIONS); 
     } 
    } 
} 

certificate.html

、単にJavaスクリプトを呼び出し、その角度。

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<script src="app.js"></script> 

エラーの詳細:Chromeで

No mapping found for HTTP request with URI [/app.js] in DispatcherServlet with name 'dispatcherServlet'

は、開発者向けのツールでは、このエラーを得た:

Failed to load resource: the server responded with a status of 404()

誰もこれに助けることができますか?

+0

私はWebConfigの中に以下のコードを追加しましたが、まだエラーを取得している

は、このしてみてください。 @Override パブリックvoid configureDefaultServletHandling(DefaultServletHandlerConfigurerコンフィグラー){ configurer.enable(); } – BaskarNatarajan

+0

私はcertificate.htmlコードを逃し、ちょうど<!DOCTYPE HTML> <スクリプトSRC = "http://ajax.googleapis.com/ajax/libsの下に貼り付け/angularjs/1.4.8/angular.min.js "> <本体NGコントローラ=" PhoneListController ">

    {{phone.name}}

    {{電話。スニペット}}

BaskarNatarajan

+0

私はあなただけの<スクリプトSRC = "/ app.js">このようにapp.js.前に "/" を追加する必要がある、と思う – reos

答えて

0

自分の設定を複数回上書きしています。

はこれを反映するために、あなたの Applicationクラスを変更し

@SpringBootApplication 
@EntityScan("com.tm.vo") 
@EnableJpaRepositories("com.tm.repository") 
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

ブートすることにより、これらの無効MVC自動設定するので、すべての@EnableWebMvcを削除します。次に、WebConfigクラスを完全に削除します。

0

WebConfigにresourceHandlersを追加しましたが、jspでjavascriptを正しく参照しているとは思われません。私は一般的に行われてきた

<script src="/static/app.js"></script> 

ただし、以下の:

<script src="${pageContext.request.contextPath}/static/app.js"></script> 
関連する問題