О исключений:
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/eniupage] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.spring4.processor.SpringTextareaFieldTagProcessor' (template: "templates/fragments" - line 144, col 60)] with root cause
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
В моей форме есть ввод текста и текстовое поле, как Вы видите. news.title сохраняется нормально, но news.content не. Когда я заменяю для проверки этих параметров (в текстовом вводе я использую news.content, а в textarea есть th: field = $ {news.title}), он тоже хорошо работает. Может быть, мне следует использовать другое выражение вместо th: field?
News.java
package eniupage.domain;
public class News
{
private String title;
private String content;
private Date date;
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content)
{
this.content = content;
}
public Date getDate()
{
return date;
}
public void setDate(Date date)
{
this.date = date;
}
}
HomeController.java
пакет eniupage.web;
@Controller
@RequestMapping("/")
public class HomeController
{
@Autowired
AddNewsService addNewsService;
@RequestMapping(method = GET)
public String home(Model model)
{
model.addAttribute("newses", addNewsService.getNewses());
return "home";
}
@RequestMapping(value = "/addNews", method = POST)
public String addNews(News news)
{
addNewsService.addNews(news);
return "redirect:/";
}
}
AdminController.java
@Controller
@RequestMapping("/admin")
public class AdminController
{
@RequestMapping(method = GET)
public String admin(Model model)
{
model.addAttribute(new News());
return "admin";
}
}
Существует не в результате чего из HTML формы, потому что она даже не отображаются в делах. Есть только кнопка ввода текста и отправки.
Edited HTML:
<form action="#" method = "POST" th:action="@{/addNews}" th:object = "${news}" id = "myform">
Tytuł: <input type = "text" th:field = "*{title}" />
<input type = "submit" value = "Add" /></br>
<textarea rows = "20" cols = "80" th:field = "*{content}" form = "myform" >... </textarea>
</form>
Я использую thymeleaf 3.0. Может быть, это причина?
В ссылке я прочитал:
«-й:. Атрибут поля ведет себя по-разному в зависимости от того, является ли он прикреплен к апу, или тег (а также в зависимости от конкретного типа тега)»
Но я не могу найти, что это за различие между использованием поля: in input и textarea.
не работает:/... Кроме того, на мой взгляд, $ {news.content} равно * {content}, когда мы использовали th: object = $ {news}. Любые другие решения? – Bambelal
На самом деле я бы сказал, что вы даже должны получить исключение из тимелеафа, но это только из моей памяти. Th: поле «нуждается» в выражении объекта. Возможно, у вас есть символ typo/false, и выражение никогда не оценивается? Посмотрите на окончательный результат и опубликуйте его здесь, используя th: поле –
Об исключениях: SEVERE: Servlet.service() для сервлета [диспетчера] в контексте с пуском [/ eniupage] бросил исключение [Обработка запроса не удалась; Вложенное исключение - org.thymeleaf.exceptions.TemplateProcessingException: ошибка во время выполнения процессора «org.thymeleaf.spring4.processor.SpringTextareaFieldTagProcessor» (шаблон: «шаблоны/фрагменты» - строка 144, col 60)] с основной причиной java.lang. StringIndexOutOfBoundsException: индекс строки за пределами диапазона: 0 – Bambelal