Почему данные sql не выводятся в html?
Я помещаю список в sql таблицу, затем с помощью селекта достаю данные из таблицы и прикрепляю их к html, но при загрузке html страницы данные из sql таблицы не видны.
Вот контроллер:
@Controller
public class MainController {
@GetMapping("/")
public String greeting(Model model) {
model.addAttribute("name", "132");
return "greeting";
}
@RequestMapping("/main")
public String main(Model model) {
List<Valute> valuteValues = new ArrayList<>();
try {
DocumentBuilder builder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream stream = new
URL("http://www.cbr.ru/scripts/XML_daily.asp").openStream();
Document document = builder.parse(stream);
Element valCurs = document.getDocumentElement();
String date = valCurs.getAttribute("Date");
NodeList valuteList = valCurs.getChildNodes();
for (int i = 0; i < valuteList.getLength(); i++) {
Node valute = valuteList.item(i);
if (valute instanceof Element) {
Element valuteElement = (Element) valute;
Valute valuteObject = new Valute();
NodeList valuteElementList =
valuteElement.getChildNodes();
for (int j = 0; j < valuteElementList.getLength(); j++) {
Node valuteProperty = valuteElementList.item(j);
if (valuteProperty instanceof Element) {
Element property = (Element) valuteProperty;
Text textNode = (Text) property.getFirstChild();
String text = textNode.getData().trim();
if (property.getTagName().equals("num_code"))
valuteObject.setNum_code(text);
else if (property.getTagName().equals("CharCode"))
valuteObject.setChar_code(text);
else if (property.getTagName().equals("Nominal"))
valuteObject.setNominal(text);
else if (property.getTagName().equals("Name"))
valuteObject.setName(text);
else if (property.getTagName().equals("Value"))
valuteObject.setValue(text);
}
}
valuteValues.add(valuteObject);
}
}
model.addAttribute("valuteValues", valuteValues.toString());
Connection connection =
DriverManager.getConnection("jdbc:postgresql://localhost:5432/smartsoft?
user=postgres&password=alberto&ssl=false");
PreparedStatement ps = connection.prepareStatement("insert into
valute (num_code, char_code, nominal, name," +
"value) values (?, ?, ?, ?, ?)");
for (Valute valuteValue : valuteValues) {
ps.setString(1, valuteValue.getNum_code());
ps.setString(2, valuteValue.getChar_code());
ps.setString(3, valuteValue.getNominal());
ps.setString(4, valuteValue.getName());
ps.setString(5, valuteValue.getValue());
ps.executeUpdate();
}
} catch (Exception e) {
e.printStackTrace();
}
return "main";
}
}
А вот html:
<head>
<title>Spring Security Приложение</title>
</head>
<body>
<h1 th:inline="text">Hello [[${#httpServletRequest.remoteUser}]]!</h1>
<form th:action="@{/logout}" method="post">
<input type="submit" value="Выйти"/>
</form>
<h1>Welcome!</h1>
<h1>Курсы валют</h1>
<table border="5">
<tr>
<th>num_code</th>
<th>char_code</th>
<th>nominal</th>
<th>name</th>
<th>value</th>
</tr>
<tr th:each="valuteValue : ${valuteValues}">
<td th:utext="${valuteValue}">num_code</td>
<td th:utext="${valuteValue}">char_code</td>
<td th:utext="${valuteValue}">nominal</td>
<td th:utext="${valuteValue}">name</td>
<td th:utext="${valuteValue}">value</td>
</tr>
</table>
</body>
</html>
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Для начала
String result ="";
while (resultSet.next()){
....
result= " " + resultSet.getString("value");
}
return result;
А дальше уже видно будет.
Автор решения: konst
→ Ссылка
Сделал hql запрос в репозитории и загрузил из sql таблицы данные во вью. Измененный контроллер:
..........................
...........................
Iterable<Valute> valutes = this.valuteRepository.findByValutes();
model.addAttribute("valutes", valutes);
........................
........................
Вот репозиторий:
public interface ValuteRepository extends JpaRepository<Valute, Integer> {
@Query("from Valute")
List<Valute> findByValutes();
}
А вот html:
.................
.................
<tr th:each="valute : ${valutes}">
<td th:utext="${valute.num_code}">num_code</td>
.......................
........................