记一次spring mvc @RequestBody 封装参数问题

前端发送参数后端接收不到

后端QUERY 代码(省略不相干的参数, 只保留接收不到的参数):
public class DataResourceTableInfo {
  ...
  protected String sTableName;
  ...
  public String getSTableName() {
        return sTableName;
  }

   public void setSTableName(String sTableName) {
     this.sTableName = sTableName;
  }
...
}
前端发送参数
 {
  ...
   sTableName : 'someValue',
  ...
 }

这样子后端就收不到参数,也不报错
注:(set get 方法为我司自有框架生成)
跟踪springMVC代码,在

package org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter
...
import com.fasterxml.jackson.databind.ObjectMapper;
...
public abstract class AbstractJackson2HttpMessageConverter extends AbstractGenericHttpMessageConverter {
...
    protected ObjectMapper objectMapper;
...
    private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) {
        try {
            if (inputMessage instanceof MappingJacksonInputMessage) {
                Class deserializationView = ((MappingJacksonInputMessage) inputMessage).getDeserializationView();
                if (deserializationView != null) {
                    return this.objectMapper.readerWithView(deserializationView).forType(javaType).
                            readValue(inputMessage.getBody());
                }
            }
            // 在这进行string json 转javaObj 操作,(其实是byte数组)
            return this.objectMapper.readValue(inputMessage.getBody(), javaType);
        }
        catch (JsonProcessingException ex) {
            throw new HttpMessageNotReadableException("JSON parse error: " + ex.getOriginalMessage(), ex);
        }
        catch (IOException ex) {
            throw new HttpMessageNotReadableException("I/O error while reading input message", ex);
        }
    }
...
}

这个json转换工具识别的set get 方法的规则和我司框架生成的不一致 因此在子类增加get set方法

 public String getsTableName() {
     return sTableName;
 }

 public void setsTableName(String sTableName) {
      super.setSTableName(sTableName);
 }

你可能感兴趣的:(记一次spring mvc @RequestBody 封装参数问题)