所以我遇到了一个非常奇怪的问题。当使用ajax
向我的Spring Controller发送发布请求时,即使我没有返回任何东西,也遇到以下错误。
错误解决模板“ poliza / modificar-distribucion”,模板 可能不存在或任何配置的设备都无法访问 模板解析器
这是我的控制器代码。
@Controller
@RequestMapping("/poliza")
public class EntryController {
// Some other methods and the @Autowired services.
@PostMapping(value = "/modificar-distribucion")
public void updateEntryDistribution(@RequestBody EntryDistribution entryDistribution) throws Exception {
entryDistributionService.updateDistribution(entryDistribution);
}
}
这是我的jQuery代码。
// Return the distribution object for each cell.
function getDistributionObject(cell) {
// Some logic.
// Return the object.
return {
entryDistributionID: {
entryID: id,
productCode: productCode,
sizeFK: size,
sizeType: sizeType,
storeId: storeId
},
quantity: integerValue,
entryHeader: null
}
}
function sendRequest(distributionObject, cell) {
// Some logic.
$.ajax({
url: "/poliza/modificar-distribucion",
data: JSON.stringify(distributionObject),
contentType : 'application/json; charset=utf-8',
dataType: 'json',
type: "POST",
success: function() {
// Now, let's set the default value to the actual value.
$(cell).attr('default-value', quantity);
}, error: function(error) {
// Send a notification indicating that something went wrong.
// Only if it is not an abort.
if(error.statusText === "Abort") return;
errorNotification(error.responseJSON.message);
}
}));
}
我的服务代码。
@Override
public void updateDistribution(EntryDistribution entryDistribution) throws Exception {
// First, let's see if the distribution exists.
EntryDistribution oldEntryDistribution = this.findById(entryDistribution.getEntryDistributionID());
if(oldEntryDistribution == null) {
// If not, insert it.
this.insert(entryDistribution);
} else {
// Else, update it.
this.update(entryDistribution);
}
}
条目分发对象。
public class EntryDistribution {
private EntryDistributionID entryDistributionID;
private Integer quantity;
private EntryHeader entryHeader;
// Getters and setters.
}
public class EntryDistributionID implements Serializable {
private Long entryID;
private String productCode;
private String sizeFK;
private String sizeType;
private String storeId;
// Getters and setters.
}
知道为什么会这样吗?我不应该收到此错误,因为我没有尝试在此特定调用中获取任何Thymeleaf模板。
答案 0 :(得分:1)
您可以以此替换代码并尝试。
@PostMapping(value = "/modificar-distribucion")
public void updateEntryDistribution(@RequestBody EntryDistribution entryDistribution) throws Exception {
entryDistributionService.updateDistribution(entryDistribution);
}
@ResponseBody
@RequestMapping(value = "/modificar-distribucion", method = RequestMethod.POST)
public Boolean updateEntryDistribution(@RequestBody EntryDistribution entryDistribution) {
return true;
}
还检查您传递的JSON对象必须与POJO属性相同
答案 1 :(得分:1)
您的方法应返回一些内容而不是void,以便ajax可以知道调用是否成功(将方法的返回类型从void更改为boolean或string)。
由于您尚未指定响应内容类型,因此spring尝试查找html页面。
要解决该问题,请在如下方法顶部添加@ResponseBody批注,以告知spring返回JSON响应。
test-id, config-file, sheet-name