Как передать значение функции в тимелеаф

Я хочу передать текст в тимелеаф, чтобы в зависимости от значения функции в 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";

}

тоже с сообщением здесь, но другой шаблон

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы посоветовал вам отправить значение 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>

Я не должен использовать if (isActivated) { model.put («сообщение», «Пользователь успешно активирован»); } else model.put("сообщение", "Код активации не найден"); model.put ("активирован", isActivated); ?

Самир Шахмурадлы 17.01.2019 14:39

Вы можете сделать это. Это просто вопрос стиля — определять сообщения в шаблонах. Если вы хотите изменить сообщение, вы, естественно, склонны менять шаблон, а не контроллер. Другое дело, если вы используете преобразователь сообщений (тогда вы определяете сообщения в файлах свойств).

Flocke 17.01.2019 15:48

публичная активация ModelAndView (модель Map<String, String>, строковый код @PathVariable) { boolean isActivated = userService.activateUser (code); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("verificationPage"); вернуть модельAndView; }

Самир Шахмурадлы 17.01.2019 15:55

я не могу передать значение isActivated(

Самир Шахмурадлы 17.01.2019 15:56

Тем не менее, вы не отправили логическое значение. Сделайте modelAndView .put("isActivated", isActivated) вместе с именем представления.

soorapadman 17.01.2019 15:59

но тот вариант что вы посоветовали тоже не работает, хочу без modelandview

Самир Шахмурадлы 17.01.2019 16:03

Тогда вы согласны с проверкой значения сообщения? Вы должны понимать, что любое значение, которое вы отправляете через контроллер, может получить доступ только к этим значениям.

soorapadman 17.01.2019 16:05

Вы не хотите, если или если просто напрямую напечатать сообщение

soorapadman 17.01.2019 16:09

Не могли бы вы прокомментировать второй случай?

Самир Шахмурадлы 17.01.2019 16:13

я хочу передать почтовое сообщение в шаблоне

Самир Шахмурадлы 17.01.2019 16:13

Я не вижу, откуда вы получаете сообщение в почте. это часть userdata?

soorapadman 17.01.2019 16:16

частный 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); }

Самир Шахмурадлы 17.01.2019 16:23

Пожалуйста, обновите вопрос или создайте новый вопрос, в котором легко разобраться.

soorapadman 17.01.2019 16:33

можно связаться в телеграмм?

Самир Шахмурадлы 17.01.2019 16:36

я не могу создать новый вопрос

Самир Шахмурадлы 17.01.2019 16:37

@samir, вы можете обновить вопрос. прокомментируйте, если вы добавите, я не могу полностью понять код.

soorapadman 17.01.2019 16:47

Другие вопросы по теме