2014-12-16 3 views
0

Я все еще новичок в Angular, и что я пытаюсь сделать, это создать угловой контроллер в отдельном файле js и сопоставить его с моим файлом jsp. Проблема в том, что я не могу получить угловую работу. Хотя он работает отлично, если я включаю скрипт контроллера в сам файл jsp. Как-то сервер не может найти эти файлы сценариев, и он выдает ошибку 404. Тем не менее я правильно указываю пути файлов, по-моему.JS-файл имеет неправильный тип при запуске на сервере (AngularJS)

Вот скриншот:

enter image description here

И это мой home.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<html ng-app="vApp"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Home</title> 

    <script type="application/javascript"   src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
    <script type="application/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js"></script> 
    <script type="text/javascript" src="WEB-INF/angular/app.js"></script> 
    <script type="text/javascript" src="WEB-INF/angular/UsersController.js"></script> 

</head> 
<body > 
    <h1>Hello World!</h1> 
    <p>This is the homepage!</p> 

    <div ng-controller="Hello as first"> 
     <h1>Supposed to be cool</h1> 
     <p>The ID is {{first.id}}</p> 
     <input type="text" ng-model="first.content"> 
     <p>The content is {{first.content}}</p> 
    </div> 

</body> 

Может этот тип штуковина быть проблема? если нет, то почему невозможно найти эти файлы?

Thanx заранее.

РЕДАКТИРОВАТЬ Сервер коды стороны: диспетчер-сервлет:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> 


<context:component-scan base-package="vermilion.calendar.controller" /> 
<context:component-scan base-package="vermilion.calendar.model" /> 
<context:component-scan base-package="vermilion.calendar.service" /> 
<context:component-scan base-package="vermilion.calendar.dao" /> 


<bean id="propertyConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 

    <property name="location" value="resources/jdbc.properties"/> 
</bean> 

<tx:annotation-driven transaction-manager="transactionManager" /> 

<bean id="transactionManager" 
     class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

<bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${jdbc.driver}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
</bean> 


<bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" p:dataSource-ref="dataSource"> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="sessionFactory.hibernateProperties">${hibernate.dialect}</prop> 
      <prop key="hibernate.transaction.factory_class">${hibernate.transaction.factory_class}</prop> 
     </props> 
    </property> 


</bean> 

HomeController:

package vermilion.calendar.controller; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RestController; 
import vermilion.calendar.service.UserService; 

@RestController 
@RequestMapping("/") 
public class HomeController { 

@Qualifier("userService") 
@Autowired 
public UserService userService; 




@RequestMapping(method = RequestMethod.GET) 
public String printWelcome(ModelMap model) { 

    model.addAttribute("message", "Spring 3 MVC Hello World"); 
    //return "login"; 
    return "home"; 
} 

@RequestMapping(value = "/hello", method = RequestMethod.GET) 
public String listUsers() { 

    return "home"; 
} 

} 

структура проекта: enter image description here

+1

Вы получаете ответ 404, который, скорее всего, возвращает HTML-документ, сообщающий вам, что (вы можете видеть на этой сетевой вкладке «Ответ» - «404 не найден»).Ваша проблема связана с сервером и не имеет никакого отношения к Javascript ... будь то изображение, файл javascript и т. Д., Этот файл не будет использоваться с этого пути. – rgthree

+0

Какой веб-сервер вы используете? Он отправляет ваши JS-файлы с типом text/html MIME вместо приложения/javascript. –

+0

Как и @rgthree, тип 'html' - это тип вашей страницы 404, поэтому проблема связана с вашим путем. 'WEB-INF/angular/app.js' указывает на неправильное место. – AlienWebguy

ответ

0

Так как я не нашел каких-либо разумное решение этой проблемы, я в конечном итоге создание нового проекта, но на этот раз я создал Симпеле веб динамический проект (не Maven), преобразованный в Maven позже. Также добавлена ​​

<welcome-file> 

к web.xml, а также я использовал

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

вместо

<servlet-mapping> <servlet-name>vermilion</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

Я не уверен, какой из этих действий, сделал работу и что на самом деле было не так, но теперь он работает с угловыми контроллерами.

Спасибо за все ваши ответы.

0

Что я вижу, это ваша проблема с путём.

<script type="text/javascript" src="WEB-INF/angular/app.js"></script> 
<script type="text/javascript" src="WEB-INF/angular/UsersController.js"></script> 

Вы можете использовать $ {pageContext.request.contextPath}, чтобы получить корневой путь к вашему приложению.

<script type="text/javascript" src="${pageContext.request.contextPath}/WEB-INF/angular/app.js"></script> 
<script type="text/javascript" src="${pageContext.request.contextPath}/WEB-INF/angular/UsersController.js"></script> 

или использовать JSTL c:url.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<script type="text/javascript" src="<c:url value='/WEB-INF/angular/app.js'/>"></script> 
<script type="text/javascript" src="<c:url value='/WEB-INF/angular/UsersController.js'/>"></script> 
+0

Thanx для вашего ответа, но, к сожалению, ни один из этих вариантов не работает для меня :( – CannotCode

Смежные вопросы