1
おはようございます。 私は休憩を取ってプロジェクトをコーディングしています。だから、抽象クラスに抽出するために私の最初のコントローラを通過しようとするといくつかのdiferenceに気づく。まあ、すべてのポストメソッドは機能しませんでした。 getメソッドはpath変数でうまく動作するので便利です。私は休息のために春を使用しています。休止JSON POSTは抽象クラスでアンマーシャリング汎用引数エラー400をマーシャリングしませんでした
この呼び出しされています
endpoint: http://localhost:8080
resource:/SpringRestCrud/client/merge
parameter:
Client Query Resource
Media type: application/json
post value:
{
"@id": 1,
"id": 1,
"code": "code",
"name": "nameb"
}
これは、すべてのポストメソッドのSOAPUI生では同じとサーバーログに例外なくです:
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 968
Date: Fri, 02 Dec 2016 10:22:32 GMT
Connection: close
<html><head><title>Apache Tomcat/7.0.56 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 400 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The request sent by the client was syntactically incorrect.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.56</h3></body></html>
まあ怒鳴るが任意の推測では、私のコントローラであり、または手がかりを読んでいただきありがとうございます。
package com.beingjavaguys.controller;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.beingjavaguys.model.Model;
import com.beingjavaguys.model.Status;
import com.beingjavaguys.services.GenericServices;
@Controller
public abstract class AbstractRest<T extends Model,I extends GenericServices<T>> implements GenericRest<T>{
@Autowired
I services;
static final Logger logger = Logger.getLogger(AbstractRest.class);
public AbstractRest() {
super();
Type kind = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
this.setEntityClass((Class<T>) kind);
}
private Class<T> entityClass;
@Override
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_FORM_URLENCODED_VALUE })
public @ResponseBody Status<T> addEntity(@RequestBody T t) throws Exception {
try {
if (services.addEntity(t)) {
return new Status<T>(1, "Entity added Successfully !",t);
} else {
return new Status<T>(0, "Entity not added Successfully !",t);
}
} catch (Exception e) {
logger.error("Entity not added Successfully !", e);
return new Status<T>(0, e.toString(),t);
}
}
@Override
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
public @ResponseBody Status<Boolean> deleteEntity(@PathVariable("id") long id) throws Exception {
try {
if (services.deleteEntity(id)) {
return new Status<Boolean>(1, "Entity deleted Successfully !",true);
} else {
return new Status<Boolean>(0, "Entity not deleted Successfully !",false);
}
} catch (Exception e) {
logger.error("Entity not deleted Successfully !", e);
return new Status<Boolean>(0, e.toString(),false);
}
}
@Override
@RequestMapping(value = "/merge", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Status<T> mergeEntity(@RequestBody T t) throws Exception {
try {
if (services.mergeEntity(t)) {
return new Status<T>(1, "Entity merged Successfully !",t);
} else {
return new Status<T>(0, "Entity not merged Successfully !",t);
}
} catch (Exception e) {
logger.error("Entity not merged Successfully !", e);
return new Status<T>(0, e.toString(),t);
}
}
@Override
@RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
public @ResponseBody Status<T> getEntity(@PathVariable("id") long id) throws Exception {
T entity = entityClass.newInstance();
try {
entity = services.getEntity(id);
if(entity!=null)
if(entity.getId()==0)
return new Status<T>(1, "Entity not found!",null);
else
return new Status<T>(1, "Entity returned Successfully !",entity);
else
return new Status<T>(0, "Entity not returned Successfully !",entity);
} catch (Exception e) {
logger.error("Entity not returned Successfully !", e);
return new Status<T>(0, e.toString(),entity);
}
}
@Override
@RequestMapping(value = "/list", method = RequestMethod.GET)
public @ResponseBody Status<List<T>> getEntityList() throws Exception {
List<T> entityList = new ArrayList<T>();
try {
entityList = services.getEntityList();
if(entityList!=null)
return new Status<List<T>>(1, "Entities returned Successfully !",entityList);
else
return new Status<List<T>>(0, "Entities not returned Successfully !",entityList);
} catch (Exception e) {
logger.error("Entities not lited Successfully !", e);
return new Status<List<T>>(0, e.toString(),entityList);
}
}
@Override
@RequestMapping(value = "/search", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Status<List<T>> getEntityList(@RequestBody T t) throws Exception {
List<T> entityList = new ArrayList<T>();
try {
entityList = services.getEntityList(t);
if(entityList!=null)
return new Status<List<T>>(1, "Entities returned Successfully !",entityList);
else
return new Status<List<T>>(0, "Entities not returned Successfully !",entityList);
} catch (Exception e) {
logger.error("Entities not lited Successfully !", e);
return new Status<List<T>>(0, e.toString(),entityList);
}
}
public Class<T> getEntityClass() {
return entityClass;
}
public void setEntityClass(Class<T> entityClass) {
this.entityClass = entityClass;
}
}