2016-12-05 5 views
0

Я пытался заставить этот код работать. Я только что начал с Spring MVC (и я относительно не знаком с веб-разработчиком - мой фон - графический интерфейс/наука), но я думаю, что ошибка может быть вызвана, потому что проблема связана с jQuery-кодом в моем jsp с Spring контроллер. Я буквально пытаюсь заставить это работать в течение нескольких дней без успеха, и я пробовал все предложения, сделанные плакатами на этом форуме, с аналогичной проблемой - безрезультатно. Поэтому я очень ценю ваш вклад. Проект разрабатывается с использованием Netbeans, Tomcat 8, Maven, Spring MVC и JQuery.Сообщение Ajax для Spring MVC-контроллера приводит к ошибке «Запрошенный ресурс недоступен»

projectDashboard.jsp (в WEB-INF/просмотров):

<div class="col-lg-8 col-md-8 col-sm-8"> 
    <div id="projectForm">         
     <div class="form-group">    
      <input id="name" name="name" type="text" class="form-control" placeholder="Project name (50 characters or less)"/> 
      <textarea id="description" name="description" class="form-control" placeholder="Project Description (200 characters or less)"></textarea>         
     </div>  
     <div class="form-group">    
      <input class="btn btn-primary pull-right" id="createProjectButton" value="Create" type="button"/>      
     </div>      
    </div>      
</div>      

JQuery:

<script> 
     $(document).ready(function(){ 
      $("#createProjectButton").on("click", function(){  
       var projectJson = { 
        "name":$("#name").val(), 
        "description":$("#description").val() 
       };      
       $.ajax({ 
        type: "POST", 
        url: "/ProgressManagerOnline/projectDashboard", 
        data: JSON.stringify(projectJson), 
        contentType: "application/json; charset=utf-8", 
        dataType: "json" 
       });      
      }); 
     });    
</script> 

ProjectDashboard.java (Spring MVC класс контроллера в SRC/основной/Java):

@RequestMapping(value = "/projectDashboard", method = RequestMethod.POST) 
public String saveProject(@RequestBody Project project) throws Exception { 
    return "OK"; 
} 

Релевантный код в appconfig-mvc.xml:

<mvc:annotation-driven/>  
<mvc:view-controller path="/" view-name="login"/> //home web page - login.jsp 

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

Maven pom.xml включает в себя:

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.8.5</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.8.5</version> 
</dependency>  

Tomcat context.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/ProgressManagerOnline"/> 

Ошибка в Firefox веб-консоли:

The requested resource is not available. (404 error) 

Мой Project.java:

@Entity 
@Table(name = "projects") 
public class Project implements Serializable { 

    private Long id; 
    private String name; 
    private String description;  
    private java.util.Date dateCreated; 

    public Project(){}; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    public Long getId() { 
     return id; 
    } 

    public void setId(Long id){ 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    @Column(name = "dateCreated", columnDefinition="DATETIME") 
    @Temporal(TemporalType.TIMESTAMP) 
    public Date getDateCreated() { 
     return dateCreated; 
    } 

    public void setDateCreated(Date dateCreated) { 
     this.dateCreated = dateCreated; 
    }  
} 

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

Большое спасибо заранее всем, кто может помочь.

+0

Каков ваш полный URL? Это должно быть/ProgressManagerOnline/projectDashboard – ScanQR

+0

Да ... Я пробовал это - я до сих пор получаю ошибку, к сожалению. – Rufus

+0

Я изменил свой код, чтобы отразить предложенные вами изменения. – Rufus

ответ

0

Вам не хватает пары конфигураций, которые я предполагаю в вашем приложении.

Вам требуется автоматическое преобразование JSON в объект Java,

@RequestBody Project project 

Следовательно, вам нужно добавить JSon конвертер так что смотрите, пожалуйста, документацию: http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/converter/json/MappingJackson2HttpMessageConverter.html

Добавить следующее в вашем контексте конфигурации XML вместе с требуемыми зависимостями добавлены в вашем pom.xml,

<!-- Configure bean to convert JSON to POJO and vice versa --> 
    <beans:bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> 

    <!-- Configure to plugin JSON as request and response in method handler --> 
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
      <ref bean="jsonMessageConverter"/> 
     </list> 
    </property> 
</bean> 
+0

Спасибо за ваш вклад. TechBreak. Я добавил изменения, которые вы предложили, но, к сожалению, я все еще получаю такую ​​же ошибку 404. – Rufus

+0

@Rufus Я думаю, что ваш метод вызван, но ему не удалось найти представление для «ОК». Попытка добавления журналов и отладки. Также попробуйте OK.jsp, чтобы этот распознаватель обнаружил это. – ScanQR

+0

потрясающий! изменения, которые вы предложили, отлично работают после полного перезапуска сервера Tomcat - большое спасибо. – Rufus

0

(Опубликовано от имени О.П.).

Решение, предлагаемое TechBreak, работало - мне не хватало зависимости от контекста Spring в моем пом.XML и дополнительные конфигурации в моем XML:

<!-- Configure bean to convert JSON to POJO and vice versa --> 
<bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> 

<!-- Configure to plugin JSON as request and response in method handler --> 
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
      <ref bean="jsonMessageConverter"/> 
     </list> 
    </property> 
</bean> 

После перезагрузки сервера и

mvn clean install 

Приветствия.

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

  • Нет связанных вопросов^_^