Некоторые из моих представлений Play Framework будут принимать обычный запрос (GET через ссылку) и запрос ajax (вызывается из кода javascript, если у пользователя включен js).
Моя настоящая проблема заключается в том, что мой код выглядитдля двух возможностей в одном методе, что-то вроде этого:
public static void lostPassword() {
HashMap<String, Object> ajax = new HashMap<String, Object>();
validation.clear();
validation.required("email", params.get("email"));
validation.email("email", params.get("email"));
if (!validation.hasErrors()) {
Account account = Account.findAccount(params.get("email"));
if (account != null) {
// Send the email:
Mails.lostPassword(account);
if (request.isAjax()) {
ajax.put("success", true);
renderJSON(ajax);
}
else {
renderTemplate("account/password/sent.html");
}
}
validation.addError("email", "This email does not exists."); // TRANS
}
if (request.isAjax()) {
ajax.put("success", false);
ajax.put("validation", AjaxUtils.fromValidationErrorsToAjax(validation.errors()));
renderJSON(ajax);
}
else {
validation.keep();
renderArgs.put("email", params.get("email"));
renderTemplate("account/password/form.html");
}
}
Как вы можете видеть, я проверяю, какой тип запроса сделан для возврата правильного ответа, и я уверен, что это нелучший способ сделать это.
Но как бы вы это сделали?
Я думал о создании частного метода, который бы выполнял работу и возвращал логическое значение, но что происходит с объектом проверки?И значит ли это, что мне придется сделать два других метода, один для запроса HTML, другой для запроса AJAX?
Как у вас дела?
Спасибо за вашу помощь!