2017-03-11 4 views
1

Mein Spring-Controller und clientseitiger Javascript-Code sind wie folgt und aus irgendeinem Grund kann das Javascript-Objekt den Spring-Controller im Objekt-Formular nicht erreichen. Mein Code-Controller ist wie folgt:Javascript-Objekt kann nicht in Java konvertiert werden Modell

@RequestMapping(value = "/addRating", method = RequestMethod.POST, headers = "Accept=application/json") 
public EmployeeRating addRating(@ModelAttribute("employeeRating") EmployeeRating employeeRating) { 
    if(employeeRating.getId()==0) 
    { 
     employeeRatingService.addRating(employeeRating); 
    } 
    else 
    { 
     employeeRatingService.updateRating(employeeRating); 
    } 

    return employeeRating; 
} 

Mein Javascript-Code unten:

$.ajax({ 
      url: 'https://myrestURL/addRating', 
      type: 'POST', 
      dataType: 'json', 
      data: { 
       'id':5, 
       'name': 'Name', 
       'rating': '1' 
      }, 
      contentType: 'application/json; charset=utf-8', 
      success: function (result) { 
      // CallBack(result); 
      window.alert("Result: " + result); 
      }, 
      error: function (error) { 
       window.alert("Error: " + error); 
      } 
     }); 

Das EmployeeRating Objekt in Java hat ID, Name und Bewertung Felder so gibt es keine Diskrepanz ist.


Aktualisieren der Modellklasse

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 

/* 
* This is our model class and it corresponds to Country table in database 
*/ 
@Entity 
@Table(name="EMPLOYEERATING") 
public class EmployeeRating { 

@Id 
@Column(name="id") 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
int id; 

@Column(name="name") 
String name;  

@Column(name="rating") 
long rating; 

public EmployeeRating() { 
    super(); 
} 
public EmployeeRating(int i, String name,long rating) { 
    super(); 
    this.id = i; 
    this.name = name; 
    this.rating=rating; 
} 
public int getId() { 
    return id; 
} 
public void setId(int id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public long getRating() { 
    return rating; 
} 
public void setRating(long rating) { 
    this.rating = rating; 
} 

} 
+0

Zeigen Sie die Klasse 'EmployeeRating' an. – RealSkeptic

+0

Beachten Sie, dass es im Frühjahr klarer ist, das Attribut "consumpts" für die Annotation zu verwenden, anstatt den Headerwert manuell anzugeben. – chrylis

+0

hinzugefügt die EmployeeRating Klasse – p0tta

Antwort

1

contentType ist die Art der Daten, die Sie senden, so application/json; Der Standardwert ist application/x-www-form-urlencoded; charset=UTF-8. Wenn Sie application/json verwenden, müssen Sie JSON.stringify() verwenden, um JSON Objekt zu senden.

JSON.stringify() verwandelt ein JavaScript-Objekt in JSON-Text und speichert es in einer Zeichenfolge.

$.ajax({ 
     url: 'https://myrestURL/addRating', 
     type: 'POST', 
     dataType: 'json', 
     data: JSON.stringify({ 
      'id':5, 
      'name': 'Name', 
      'rating': '1' 
     }), 
     contentType: 'application/json; charset=utf-8', 
     success: function (result) { 
     // CallBack(result); 
     window.alert("Result: " + result); 
     }, 
     error: function (error) { 
      window.alert("Error: " + error); 
     } 
    }); 
+0

Ich hatte versucht, die JSON.Stringify und es funktioniert nicht. – p0tta

Verwandte Themen