Ошибка разрешения шаблона, когда я даже не запрашиваю один - PullRequest
0 голосов
/ 11 марта 2019

Итак, у меня очень странная проблема.При отправке почтового запроса с использованием ajax на мой Spring Controller, хотя я ничего не возвращаю, я получаю следующую ошибку.

Ошибка при разрешении шаблона "poliza / modificar-distributioncion", шаблон может не существовать или может быть недоступен для любого из настроенных преобразователей шаблонов

ЗдесьКод моего контроллера.

@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 ]

1 голос
/ 11 марта 2019

Ваш метод должен возвращать что-то вместо void, чтобы ajax мог знать, был ли вызов успешным или нет (измените тип возврата метода с void на boolean или string).

Поскольку вы не указали содержимое ответавведите так, что spring пытается найти html-страницу.

Чтобы решить эту проблему, попросите spring возвращать ответ JSON, добавив аннотацию @ResponseBody поверх метода, как показано ниже.

@PostMapping(value = "/modificar-distribucion")
@ResponseBody
public String updateEntryDistribution(@RequestBody EntryDistribution entryDistribution) throws Exception {
        entryDistributionService.updateDistribution(entryDistribution);
        return "success";
}
1 голос
/ 11 марта 2019

Вы можете заменить свой код этим и попробовать.

@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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...