我的Ajax
代码如下所示
$.ajax({
type : 'post',
url : url,
async : false,
data: {'txToClose': '1234,5678','sno':'0195'},
contentType : "application/x-www-form-urlencoded; charset=utf-8",
dataType : "json",
success : function(result,status,xhr){
console.log(result);
}
});
txToClose 值1234,5678将以逗号分隔的字符串形式出现在文本框中。用户将以逗号分隔键入它们。
我试图在controller
@PostMapping("/txToClose")
public ResultDto txToClose(HttpServletRequest request, HttpServletResponse response) throws BBException
{
logger.info("Called txToClose controller");
ResultDto resultDto = new ResultDto();
String txToClose= request.getParameter("txToClose");
String sno= request.getParameter("sno");
logger.info("Transactions to close :"+txToClose+", Serial Num :"+sno);
}
要关闭的交易:null,Serial Num:null
我在这里缺少什么?
答案 0 :(得分:1)
您将数据作为请求正文发布,当然使用request.getParameter()
会为您提供null
。 getParameter()用于从URL参数中检索值。
我对SpringMVC不太熟悉,但尝试将方法参数更改为
public ResultDto txToClose(@RequestBody ResultDto resultDto ) throws BBException
{
logger.info("Called txToClose controller");
String txToClose= resultDto.getTxtToClose();
String sno= resultDto.getSno();
logger.info("Transactions to close :"+txToClose+", Serial Num :"+sno);
}
我假设您的ResultDto
与您的JSON格式相同。
答案 1 :(得分:0)
删除该行
contentType:" text / plain;字符集= UTF-8",
或使用默认的contentType
contentType:" application / x-www-form-urlencoded;字符集= UTF-8",
它应该有用。
答案 2 :(得分:0)
我通过在签名中添加@RequestBody ObjectNode json解决了这个问题。
public ResultDto txToClose(HttpServletRequest request, HttpServletResponse response,@RequestBody ObjectNode json) throws BBException
{
logger.info("Called txToClosecontroller");
ResultDto result = new ResultDto();
String txToClose= json.get("txToClose").asText();
}