Весенний сапог с тимьяновым листом productName - PullRequest
0 голосов
/ 19 октября 2018

Я хочу отобразить свое productName, но есть Ошибка как:

ERROR 10464 --- [nio-8080-exec-6] org.thymeleaf.TemplateEngine             
: [THYMELEAF][http-nio-8080-exec-6] Exception processing template 
"/productView/productPage": An error happened during template parsing 
(template: "class path resource 
[templates//productView/productPage.html]")

org.thymeleaf.exceptions.TemplateInputException: An error happened 
during template parsing (template: "class path resource 
[templates//productView/productPage.html]")



@Controller
public class ProductController {

@Autowired
private ProductService productService;

@GetMapping("productAdmin")
public String next(Model model){
    model.addAttribute("eProduct",new Product());
    return "/adminView/productAdmin";
}

@GetMapping("/productPage")
public String productPage(){
    return "/productView/productPage";
}


@PostMapping("/saveProduct")
public String save(@ModelAttribute("eProduct")  Product product, BindingResult result,
                   @RequestParam("pathImage") MultipartFile multipartFile ){
    String path = System.getProperty("user.home") + File.separator + "projectImages\\";

    try {
        multipartFile.transferTo(new File(path + multipartFile.getOriginalFilename()));
    } catch (IOException e) {
        e.printStackTrace();
    }
    product.setPathImage("\\images\\" + multipartFile.getOriginalFilename());
    productService.save(product);
    return "/mainView/index";
}

@GetMapping("/products")
public String products(Model model){
    model.addAttribute("products",productService.findAll());
    return "/productView/products";
}

@GetMapping("/product-{id}")
public String productPage(@PathVariable("id") int id, Model model){
    Product product = productService.findOne(id);
    model.addAttribute("product",product);
    return "/productView/productPage";
}

}

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
 <head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
 Product Page
<p><span th:text="${product.productName}"/></p>
</body>
</html>

Но я не причина этой проблемы.Весной я пишу

$ {product.productName}

, и мой код работал хорошо. Но в этой ситуации я не понимаю, что я делаю неправильно.Не могли бы вы помочь мне с этой проблемой.Поскольку я не знаю, что делать дальше, я пытался сделать это сам, но это не сработало.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Я вижу двойные косые черты (//) в журнале ошибок: шаблоны // productView / productPage.html

Попробуйте изменить код на:

@GetMapping("/productPage")
public String productPage(){
return "productView/productPage";
}
0 голосов
/ 19 октября 2018

Я нашел вашу ошибку, в журнале, который вы загрузили в комментарии, я увидел, что причина ошибки была следующей:

Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "product.id" (template: "productView/productPage" - line 10, col 4)

Так что меню, что либо модель вашего продукта не имеет геттеровдля этого поля вы не используете правильное имя для этого поля или отправляете нулевое значение.Итак, исследуя далее, я нашел это другое сообщение.

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'id' cannot be found on null

Так что это означает, что идентификатор вашего продукта равен нулю.Чтобы исправить это, вам нужно изменить код для одной из следующих опций:

<span th:text="${product.id != null} ? ${product.id} : 'null'></span>
<span th:text="${product?.id}"></span>

Последняя опция называется «безопасная навигация».Я не использовал это.Я использовал только первый, но он тоже должен работать.Более подробную информацию о безопасной навигации можно найти здесь. [безопасная навигация]

Еще одна вещь, я не вижу фрагмент, где вызывается ${product.id}, но выполнение того, что я только что отправил, должно работать.

0 голосов
/ 19 октября 2018

Проверьте синтаксис вашего шаблона, возможно, вам не хватает закрывающего тега

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...