![](/img/trans.png)
[英]The request sent by the client was syntactically incorrect, list to checkboxes
[英]The request sent by the client was syntactically incorrect
我正在使用Spring Hibernate調用存儲過程,在這里我有兩個名為DataValueTable和employee的表。在post方法中,當我從postclient發布數據時
客戶端發送的請求在語法上不正確
僅對於DataValueTable,post方法不起作用。對於員工來說,所有操作都執行良好。任何人都可以指導我為什么它顯示錯誤。
控制器方式
@Controller
@RequestMapping("/DataValueTable")
public class DataController {
@Autowired
DataServices dataServices;
static final Logger logger = Logger.getLogger(DataController.class);
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody
Status addData(@RequestBody DataValueTable dataObject) {
try {
dataServices.addDataEntity(dataObject);
return new Status(1, "data added Successfully !");
} catch (Exception e) {
// e.printStackTrace();
return new Status(0, e.toString());
} }
DataValueTable.java
@Entity
@Table(name = "DataValueTable")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class DataValueTable implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "ID")
private long ID;
@Column(name = "Datatype")
private String Datatype;
@Column(name = "Datacategory")
private String Datacategory;
@Column(name = "DataValue")
private String DataValue;
public long getID() {
return ID;
}
public void setID(long ID) {
this.ID = ID;
}
public String getDatatype() {
return Datatype;
}
public void setDatatype(String Datatype) {
this.Datatype = Datatype;
}
public String getDatacategory() {
return Datacategory;
}
public void setDatacategory(String Datacategory) {
this.Datacategory = Datacategory;
}
public String getDataValue() {
return DataValue;
}
public void setDataValue(String DataValue) {
this.DataValue = DataValue;
}}
spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<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:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:component-scan base-package="com.beingjavaguys.controller" />
<mvc:annotation-driven />
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://localhost;database=Sample" />
<property name="username" value="scgg" />
<property name="password" value="rtyt" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.beingjavaguys.model.Employee</value>
<value>com.beingjavaguys.model.DataValueTable</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
</props>
</property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="persistenceExceptionTranslationPostProcessor"
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<bean id="dataDao" class="com.beingjavaguys.dao.DataDaoImpl"></bean>
<bean id="dataServices" class="com.beingjavaguys.services.DataServicesImpl"></bean>
</beans>
DataDoaImpl.java
@Override
public boolean addDataEntity(DataValueTable dataObject) throws Exception {
session = sessionFactory.openSession();
Transaction t = session.beginTransaction();
int ival = session.createSQLQuery("EXEC createData @datatype=N'"+dataObject.getDatatype() +"',@datacategory=N'" + dataObject.getDatacategory() +"',@datavalue=N'" + dataObject.getDataValue() +"'").executeUpdate();
t.commit();
session.close();
return false;
}
要求格式
{
"ID":1,
"Datatype": "asd",
"Datacategory": "assaa",
"DataValue": "asassasa"
}
如果要屏蔽控制器不必要的元素/屬性,請嘗試在DataValueTable類上使用以下annotation
。
@JsonIgnoreProperties(ignoreUnknown = true)
嘗試將DataValueTable
的屬性更改為以下屬性(使用駝峰式的情況),然后生成getter和setter方法。
{
"id":1,
"dataType": "asd",
"dataCategory": "assaa",
"dataValue": "asassasa"
}
更新資料
傑克遜也非常有力且有限制性。 它很好地執行了命名約定,使用您自己的命名策略的一種方法是擴展
com.fasterxml.jackson.databind.PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy
如果不可能,請使用@JsonProperty("MyJsonProperty")
注釋您的屬性,但首先需要遵循命名約定,因此原始答案更合適。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.