当我什至不要求一个模板时,错误解决模板问题

时间:2019-03-11 04:48:41

标签: jquery ajax spring spring-mvc thymeleaf

所以我遇到了一个非常奇怪的问题。当使用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模板。

2 个答案:

答案 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