Пишу веб-приложение, которое будет рисовать график. На страницe index ввожу три значения, которые нужно передать на страницу chart, на которой будет отрисовываться график, но вылетает ошибка: Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'x0' for method parameter type double is not present]
index:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Index Page</title>
</head>
<body>
<h1>Enter Parameters</h1>
<form method="get">
<!--<form th:action="@{'/chart'}" method="get">-->
<label for="n">n:</label>
<input type="number" id="n" name="n" required><br><br>
<label for="epsilon">Epsilon:</label>
<input type="number" id="epsilon" name="epsilon" required><br><br>
<label for="x0">x0:</label>
<input type="number" id="x0" name="x0" required><br><br>
<!--<button type="submit">Generate Chart</button>-->
<button type="submit" th:href="@{/chart(n=${#fields.danger('n').value}, epsilon=${#fields.danger('epsilon').value}, x0=${#fields.danger('x0').value})}">Generate Chart</button>
</form>
</body>
</html>
chart
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Chart</title>
</head>
<body>
<h1 th:text="${chartName}"></h1>
<img th:src="${imageSrc}" alt="Chart">
</body>
</html>
ChartController:
package eugene.practice;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.io.IOException;
import java.util.List;
import java.util.function.Function;
@Controller
public class ChartController {
@GetMapping("/")
public String index() {
return "index";
}
@GetMapping("/chart")
public String generateChart(@RequestParam int n,
@RequestParam int epsilon,
@RequestParam int x0,
HttpServletResponse response,
Model model) throws IOException
{
// Определяем функцию, которую аппроксимируем
Function<Double, Double> f = Math::sin; // Пример функции, замените на нужную
// Создаем набор данных для графика
XYSeries series = new XYSeries("Taylor Polynomial");
List<Double> coefficients = TaylorApproximation.taylorPolynomial(x0, n, f);
for (int i = 0; i < coefficients.size(); i++) {
series.add(i, coefficients.get(i));
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
// Создаем график
JFreeChart chart = ChartFactory.createXYLineChart(
"Taylor Polynomial Approximation",
"n",
"Coefficient",
dataset
);
// Настраиваем стиль графика
chart.getPlot().setBackgroundPaint(Color.WHITE);
chart.getXYPlot().getRenderer().setSeriesPaint(0, Color.BLUE);
// Выводим график в формате PNG
response.setContentType("image/png");
ChartUtils.writeChartAsPNG(response.getOutputStream(), chart, 800, 600);
// Передаем данные о графике на HTML-страницу
model.addAttribute("chartName", "Taylor Polynomial Approximation");
model.addAttribute("imageSrc", "/chart?x0=" + x0 + "&epsilon=" + epsilon + "&n=" + n);
return "chart";
}
}
Подскажите, в чем проблема? Вроде все передаю правильно, но при этом даже точка останова на generateChart не срабатывается.