Spring, POST'owanie z Ajaxa

0

Hej, mam problem z wysłaniem wiadomości AJAX'em do Javy
Ajax:

 
<script type="text/javascript">
		var markers ={"name": "Dupa", "keywords": "dupa,dupa", "bid_amount": "5", "campaign_fund": "50", "status": "ON", "town": "Zakopane", "radius": "52"};
				  
		$.ajax({
			type: "POST",
			url: "http://localhost:8080/peksa/rest/create",
			async : false,
			data: JSON.stringify(markers),
			contentType: "application/json",
			dataType: "json",
			success: function(data){alert(data);},
			error: function(errMsg){console.log(errMsg); alert(JSON.stringify(markers));}		
		});
		
	</script>

Java:

@POST
	@Consumes(MediaType.APPLICATION_JSON)
	public void create(Campaign campaign) {
		em.persist(campaign);	
	}

Baza danych:

@Data
@Entity
@Table(name = "Campaign")
public class Campaign 
{
	
	@Id
	@Column(name = "Name", unique = true, nullable = false)
	private String name;

	@Column(name = "Keywords", nullable = false)
	private String keywords;

	@Column(name = "Bid_amount", nullable = false)
	private String bid_amount;

	@Column(name = "Campaign_fund", nullable = false)
	private String campaign_fund;

	@Column(name = "Status", nullable = false)
	private String status;

	@Column(name = "Town", nullable = false)
	private String town;

	@Column(name = "Radius", nullable = false)
	private String radius;
}

Konsola przeglądarki wypluwa: "400 Bad Request"
Ktoś, coś?

0

1)data: JSON.stringify(markers), to wkoncu wysylasz JSON czy string
2) W kontrolerze do parametru @RequestBody

1

Przetestowałem ten twój kod u mnie i działa - poprawnie mapuje sobie jsona na obiekt, również wywołanie ajaxowe jest ok. Możliwe, że masz coś źle w konfiguracji JAX-RS

0

Ale co mogę mieć źle? Skoro łapie funkcję, a zwraca 400 bad request to adresy się zgadzają, robię projekt i stanąłem na tym dziadostwie, jakieś pomysły gdzie w konfiguracji może być błąd?
/edit
Logi z przeglądarki:

POST http://localhost:8080/peksa/rest/create 400 (Bad Request) jquery.min.js:4
Object {readyState: 4, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
0

Oracle mówi:
"If the URI path template variable cannot be cast to the specified type, the JAX-RS runtime returns an HTTP 400 (“Bad Request”) error to the client."

W zasadzie nie masz @PathParam
ale pewnie do posta też się to tyczy.

Moim zdaniem zła konfiguracja JAX-RS.

0

Nowy log - JEST CORAZ LEPIEJ

Unrecognized field "promotionId" (class pl.peksa.byleco.User), not marked as ignorable (2 known properties: "username", "password"])
 at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@4d3c3ba7; line: 1, column: 17] (through reference chain: pl.peksa.byleco.User["promotionId"])

Tylko tutaj pojawia się problem bo nie mam takiej klasy "User", kiedyś była, ale została usunięta, a projekt przekompilowany milion razy

0

No ale na serwerze jest klasa user która nie ma takiego pola promotionId

0

klN9pS.gif

0

Marszal - dzięki za pomoc, miałeś rację, w pomie webservice machnąłem się przy zmienianiu nazw i maven nie łapał : p, a dokładnie gdyby ktoś miał kiedyś taki problem to:

<dependency>
		<groupId>pl.peksa.byleco</groupId>
		<artifactId>dzialaj.service</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>

ArtifactId nie pokrywał się z artifactID tego właśnie POM'A

1 użytkowników online, w tym zalogowanych: 0, gości: 1