Использование hashmap в качестве базы данных в Java Spring MVC - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь создать логин в Java, SpringBoot и HTML (thymeleaf), но использую хэш-карту для хранения имени пользователя и пароля вместо SQL или встроенной поддержки. У меня проблемы с этим, потому что он печатает хеш-карту на веб-сайте (я также пытаюсь показать эти 2 значения на веб-сайте), но он делает это пустым, как это: "{}" Вот что я сделал:

Сеттеры и геттеры:

import java.util.HashMap;
import java.util.Map;

public class Greeting {
   // id = username. content = password.
    private String id;
    private String content;
public Map<String, String> userAndPassword = new HashMap<>();

public void setId(String id) {
    // username
    this.id = id;
}

public String getId() {
    return id;
}

public void setContent(String content) {
    this.content = content;
}

public String getContent() {
    return content;
}

public void setuserAndPassword(Map<String,String> userAndPassword) {
    this.userAndPassword = userAndPassword;
    // adding username and password into the hashmap
    userAndPassword.put(id, content);
}

public Map<String, String> getuserAndPassword() {
    return userAndPassword;
}
}

Вид (result.html):

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Web Login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <h1>Datos</h1>
    <p th:text="'User ID: ' + ${greeting.id}" />
    <p th:text="'Password: ' + ${greeting.content}" />
    <p th:text="'Printing out hashmap with all data: ' + ${greeting.userAndPassword}" />
</body>
</html>

Контроллер:

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class GreetingController {

    @GetMapping("/greeting")
    public String greetingForm(Model model) {
        model.addAttribute("greeting", new Greeting());
        return "greeting";
    }

    @PostMapping("/greeting")
    public String greetingSubmit(@ModelAttribute Greeting greeting) {
        return "result";
    }

}

1 Ответ

0 голосов
/ 03 ноября 2019

Ваш вопрос мне не до конца понятен. Исходя из вашего кода после post звонка вы хотите приземлиться на result странице. Но вы не привязываете к этому объекту Greeting. Так что попробуйте как ниже.

 @PostMapping("/greeting")
    public ModelAndView greetingSubmit(@ModelAttribute Greeting greeting) {
     ModelAndView mv= new ModelAndView("result");
      mv.addAddObject("greeting", greeting);
        return mv;
    }

надеюсь, что ваш greeting не null

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