Über Ausnahmen:
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
In meiner Form gibt es die Texteingabe und Textbereich wie Sie sehen. news.title ist ok gespeichert, aber news.content nicht. Wenn ich diese Parameter für den Test ersetze (in der Texteingabe benutze ich news.content und in textarea gibt es th: field = $ {news.title}) funktioniert es auch gut. Vielleicht sollte ich einen anderen Ausdruck anstelle von th: field verwenden?
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
Paket 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";
}
}
Es gibt keine resultierende HTML-Form ist, weil es nicht einmal in div angezeigt wird. Es gibt nur Texteingabe und Übermittlungsschaltfläche.
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>
I thymeleaf 3.0 mit bin. Vielleicht ist das ein Grund?
In Bezug I lesen:
„The th:. Feldattribut anders verhält sich abhängig davon, ob es eine angebracht ist, oder einen Tag (und auch in Abhängigkeit von der spezifischen Art des tages)“
Aber ich kann nicht finden, was ist der Unterschied zwischen th: Feld in Eingabe und Textarea verwenden.
funktioniert nicht:/... Außerdem meiner Meinung nach $ {news.content} ist gleich * {content} wenn wir th: object = $ {news}. Irgendwelche anderen Lösungen? – Bambelal
In der Tat hätte ich gesagt, dass Sie eine Ausnahme von Thymeleaf bekommen sollten, aber das ist nur aus meiner Erinnerung. Th: Feld "benötigt" einen Objektausdruck. Wahrscheinlich haben Sie einen Tippfehler/falschen Charakter und der Ausdruck wird nie ausgewertet? Werfen Sie einen Blick auf das Endergebnis und geben Sie es hier ein: th: field –
Über Ausnahmen: SEVERE: Servlet.service() für Servlet [Dispatcher] im Kontext mit path [/ eniupage] warf Ausnahme [Anfrage Verarbeitung fehlgeschlagen; verschachtelte Ausnahme ist org.thymeleaf.exceptions.TemplateProcessingException: Fehler bei der Ausführung von Prozessor 'org.thymeleaf.spring4.processor.SpringTextareaFieldTagProcessor' (Vorlage: "templates/fragments" - Zeile 144, Spalte 60)] mit der Ursache java.lang. StringIndexOutOfBoundsException: String-Index außerhalb des Bereichs: 0 – Bambelal