Я хочу передать текст в тимелеаф, чтобы в зависимости от значения функции в VerificationPage отображался текст
public String activate(Map<String, String> model, @PathVariable String code) {
boolean isActivated = userService.activateUser(code);
// TODO: change to boolean in template
if (isActivated) {
model.put("message", "User Successfully activated");
} else model.put("message", "Activation code not found");
return "verificationPage";
}
значения сообщения в функции не будет, я передал в шаблон, но не знаю как взять значение этой функции, то есть true или false, чтобы понять какое сообщение показывать
<div th:if = "${#bools.isTrue(message)}"><p>User Successfully activated .</p></div>
<div th:unless = "${#bools.isFalse(message)}"><p>Activation code not found.</p></div>
Как передать значение функции в тимелеаф?
public String processForgotPasswordForm(@RequestBody User userData) throws Exception {
User dbUser;
String userEmail = userData.getEmail();
String userName = userData.getUsername();
if (userEmail == null && userName == null) {
throw new Exception("Пустое поле");
}
if (userEmail != null) {
dbUser = userService.findUserByEmail(userEmail);
} else {
dbUser = userService.findUserByUsername(userName);
}
if (dbUser != null) {
String newPassword = RandomStringUtils.randomAlphanumeric(8);
String hashPass = DigestUtils.md5Hex(newPassword);
dbUser.setValidatyTime(new Date());
dbUser.setTemporaryPassword(hashPass);
userService.save(dbUser);
// TODO: move to template
String message = String.format(
"Your new temporary password, which will be valid for an hour " + " " + newPassword + "\nYou can log in and change your password to a new one.\n");
mailSenderService.send(dbUser.getEmail(), "Temporary password", message);
}
return "wait";
}
тоже с сообщением здесь, но другой шаблон




Я бы посоветовал вам отправить значение true или false через контроллер.
public String activate(Map<String, String> model, @PathVariable String code) {
boolean isActivated = userService.activateUser(code);
// TODO: change to boolean in template
if (isActivated) {
model.put("message", "User Successfully activated");
} else model.put("message", "Activation code not found");
model.put("isActivated", isActivated);
return "verificationPage";
}
А в html можно попробовать
<div th:if = "${isActivated} == true"><p>User Successfully activated .</p></div>
<div th:unless = "${isActivated}"><p>Activation code not found.</p></div>
Обновлено`
В вашем случае вы можете просто распечатать сообщение, вам вообще не нужно иметь условие if.
<div ><p>${message}</p></div>
Вы можете сделать это. Это просто вопрос стиля — определять сообщения в шаблонах. Если вы хотите изменить сообщение, вы, естественно, склонны менять шаблон, а не контроллер. Другое дело, если вы используете преобразователь сообщений (тогда вы определяете сообщения в файлах свойств).
публичная активация ModelAndView (модель Map<String, String>, строковый код @PathVariable) { boolean isActivated = userService.activateUser (code); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("verificationPage"); вернуть модельAndView; }
я не могу передать значение isActivated(
Тем не менее, вы не отправили логическое значение. Сделайте modelAndView .put("isActivated", isActivated) вместе с именем представления.
но тот вариант что вы посоветовали тоже не работает, хочу без modelandview
Тогда вы согласны с проверкой значения сообщения? Вы должны понимать, что любое значение, которое вы отправляете через контроллер, может получить доступ только к этим значениям.
Вы не хотите, если или если просто напрямую напечатать сообщение
Не могли бы вы прокомментировать второй случай?
я хочу передать почтовое сообщение в шаблоне
Я не вижу, откуда вы получаете сообщение в почте. это часть userdata?
частный JavaMailSender mailSender; @Value("${spring.mail.username}") private String имя пользователя; public void sendEmail (электронная почта SimpleMailMessage) { mailSender.send (электронная почта); } public void send(String emailTo, String subject, String message){ SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setFrom (имя пользователя); mailMessage.setTo(emailTo); mailMessage.setSubject(тема); mailMessage.setText (сообщение); mailSender.send(mailMessage); }
Пожалуйста, обновите вопрос или создайте новый вопрос, в котором легко разобраться.
можно связаться в телеграмм?
я не могу создать новый вопрос
@samir, вы можете обновить вопрос. прокомментируйте, если вы добавите, я не могу полностью понять код.
Я не должен использовать if (isActivated) { model.put («сообщение», «Пользователь успешно активирован»); } else model.put("сообщение", "Код активации не найден"); model.put ("активирован", isActivated); ?