Всем доброго дня. Сильно не пинайте, ибо не знаю, что ещё нужно выложить, чтобы решить проблему. Помогите пожалуйста, не получается вывести на странице jspx результат запроса из java класса. Просто отобразить то, что выходит в консоль на страничке, переменную stat. В консоли результат выходит как надо. GIT
Pom.xmls
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>name.alexkosarev.tutorials</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<name>spring-boot-starter-parent</name>
<description>Demo project for Spring Boot</description>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- JSTL for JSP -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- Need this to compile JSP -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- Need this to compile JSP,
tomcat-embed-jasper version is not working, no idea why -->
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.6.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Контроллер
@Controller
@RequestMapping("/")
@Configuration
@ComponentScan("com.repositories")
public class OptionsController {
@Autowired
private JobformService jobformService = new JobformServiceImpl();
@RequestMapping(value = "/options/create", method = RequestMethod.POST)
public String options(JobForm jobForm) {
jobformService.addJobForm(jobForm);
return "redirect:/options";
}
@RequestMapping(value = "/options")
public String getAllByWorkdate(Model model, String work_date) {
System.out.println("CONTR get all by work date");
List<JobForm> jobForms = jobformService.getAllByWorkdate(work_date);
model.addAttribute("optionsList", jobForms);
return "/options";
}
@RequestMapping(value = "/options/delete{id}", method = RequestMethod.GET)
public String removeJobform(@PathVariable("id") long id) {
jobformService.removeJobForm(id);
return "redirect:/options";
}
@RequestMapping(value = "/options/getstatistics")
public String getStatistics(Model model) {
String stat = jobformService.getStatistics();
model.addAttribute("statlist", stat);
System.out.println(stat);
return "redirect:/statistics";
}
}
Страница jspx
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns="http://www.w3.org/1999/xhtml" version="2.0"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<jsp:directive.page contentType="text/html" pageEncoding="UTF-8"/>
<jsp:output doctype-root-element="html"
doctype-system="about:legacy-compat"
omit-xml-declaration="true"/>
<html>
<head>
<title>Statistics</title>
</head>
<body>
<img src="https://www.sherloglatvia.com/wp-content/uploads/2016/06/logo.png"
alt="sherlog" width="90" height="50"/>
<h1>Statistics</h1>
<div style="float: bottom">
<table>
<tr>
<th>Montaz</th>
</tr>
<tr>
<td><c:out value="${statlist}"/></td>
</tr>
</table>
</div>
<div style="float: right">
<form action="${pageContext.request.contextPath}/options/getstatistics"
method="get">
<p>
<label for="date"> Выберите месяц: </label><br/>
<input id="date" type="month" name="workdate"/>
<br/>
<button class="add_button"> Pievienot</button>
</p>
</form>
</div>
<div style="height: 200px; width: 100px; border: 3px dashed #e03c32; float:
left">
<p>
<strong><a href="/">Years list</a></strong> <br/>
<strong><a href="/year2019">Month list</a></strong><br/>
<strong><a href="/statistics">Statistics</a></strong>
</p>
</div>
</body>
</html>
</jsp:root>
WebConfig
package com.config;
import org.springframework.context.annotation.Configuration;
import
org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jspx");
}
}
Страница, где вывожу данные из БД
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns="http://www.w3.org/1999/xhtml" version="2.0"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<jsp:directive.page contentType="text/html" pageEncoding="UTF-8"/>
<jsp:output doctype-root-element="html"
doctype-system="about:legacy-compat"
omit-xml-declaration="true"/>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>
<style>
.navbar {
overflow: hidden;
background-color: #333;
font-family: Arial, Helvetica, sans-serif;
}
.navbar a {
float: left;
font-size: 16px;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
.dropdown {
float: left;
overflow: hidden;
}
.dropdown .dropbtn {
cursor: pointer;
font-size: 16px;
border: none;
outline: none;
color: white;
padding: 14px 16px;
background-color: inherit;
font-family: inherit;
margin: 0;
}
.navbar a:hover, .dropdown:hover .dropbtn, .dropbtn:focus {
background-color: red;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
}
.dropdown-content a {
float: none;
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.dropdown-content a:hover {
background-color: #ddd;
}
.show {
display: block;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
.remove_button {
padding: 10px 15px;
font-size: 24px;
text-align: center;
cursor: pointer;
outline: none;
color: #e60000;
background-color: #00008B;
border: none;
border-radius: 15px;
box-shadow: 0 9px #999;
}
.add_button {
padding: 15px 25px;
font-size: 24px;
text-align: center;
cursor: pointer;
outline: none;
color: #fff;
background-color: #00008B;
border: none;
border-radius: 15px;
box-shadow: 0 9px #999;
}
button:hover {
background-color: #3e8e41;
}
button:active {
background-color: #3e8e41;
box-shadow: 0 5px #666;
transform: translateY(4px);
}
textarea {
position: absolute;
top: 98px;
right: 450px;
}
table {
position: absolute;
top: 200px;
left: 210px;
}
</style>
<title>Title</title>
</head>
<body>
<a></a><img src="https://www.sherloglatvia.com/wp-content/uploads/2016/06/logo.png" alt="sherlog" width="90" height="50"/>
<br/>
<div style="float: right">
<form action="${pageContext.request.contextPath}/options/create" method="post">
<label for="car">Ievadi A/M marku un numuru</label><br/>
<input type="text" name="car" id="car" size="40"/><br/>
<br/>
<label for="client">Ievadi klientu un tel.</label><br/>
<input id="client" type="text" name="client" size="40"/>
<br/>
<br/>
<label for="sistem">Izvelejies sistemu</label>
<div><select id="sistem" name="sistem"> size="3" multiple="multiple"
<option value="Optimum"/>
optimum
<option value="mini"/>
mini
<option value="comfort"/>
comfort
</select></div>
<br/>
<div><label for="work">Izvelejies darba veidu</label><br/>
<select id="work" name="work"> size="3" multiple="multiple"
<option value="Montaz"/>
montaz
<option value="Remont"/>
remont
<option value="Snjatie"/>
snjatie
</select></div>
<br/>
<div><label for="manager">Kas veic ierakstu</label><br/>
<select id="manager" name="manager"> size="3" multiple="multiple"
<option value="Agnese"/>
Agnese
<option value="Kristine"/>
Kristine
<option value="Aigars"/>
Aigars
</select></div>
<p><label for="date"> Выберите дату: </label><br/>
<input id="date" type="date" name="workdate" />
</p>
<br/>
<br/>
<br/>
<!-- <input type="submit" value="Pievienot"/>-->
<p>
<button class="add_button"> Pievienot</button>
</p>
<p><label for="info"></label>
<textarea style="left: 210px" id="info" cols="60" rows="6" name="info">info</textarea></p>
</form>
<table style="word-wrap: break-word" border="7">
<tr>
<th>Date</th>
<th>Manager</th>
<th>Car</th>
<th>Client</th>
<th>Info</th>
<th>Sistem</th>
<th>Work</th>
<th>Action</th>
</tr>
<c:forEach var="JobForm" items="${optionsList}">
<tr>
<td width="75">${JobForm.workdate}</td>
<td width="50">${JobForm.manager}</td>
<td width="50">${JobForm.car}</td>
<td width="50">${JobForm.client}</td>
<td width="50">${JobForm.info}</td>
<td width="50">${JobForm.sistem}</td>
<td width="50">${JobForm.work}</td>
<td width="50"><a href="/options/delete${JobForm.id}">Delete</a></td>
</tr>
</c:forEach>
</table>
</div>
<br/>
<div style="height: 200px; width: 100px; border: 3px dashed #e03c32; float: left">
<p>
<strong><a href="/">Years list</a></strong> <br/>
<strong><a href="/year2019">Month list</a></strong><br/>
<strong><a href="/statistics">Statistics</a></strong>
</p>
</div>
</body>
</html>
не понимаю что куда написать. Примеры с выводом данных из базы нашёл в достаточном количестве, а вот просто переменную не могу. Либо криво ищу , либо не понимаю что искать. Делаю первые шаги в спринге и пока не очень получается. Спасибо.
Для вывода одиночной строковой переменной воспользутесь:
<c:out value = "${statistics}"/>
Этот код нужно использовать вместо вашего блока с forEach (который применяется при работе с коллекциями, которых у вас нет).
<c:forEach var="statistics" items="${statistics}">
<tr>
<td>${statistics.stat}</td>
</tr>
</c:forEach>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я хочу сделать возможность записи файлов на съёмный носительДело в том, что при попытки записи на него показывает ошибку open failed: EACCES (Permission...
Когда отправляю POST-запрос через postman на /oauth/token я вношу параметры username, password, grant_type=password (application/x-www-form-urlencoded) Мне приходит ответ:
Я хочу занести цифры числа в массив, но на деле мой цикл не делает этогоОн вносит максимум 4 цифры