使用 thymeleaf 并使用 java Spring 从 java 对象中获取字符串

戴伊茨

我尝试从带有 thymeleaf 并使用 java Spring 作为框架的 java 对象获取字符串,但出现错误,错误是:

org.springframework.expression.spel.SpelEvaluationException:EL1004E:方法调用:在 java.lang.String 类型上找不到方法 getSrc()

html代码是:

<div th:each="product: ${products}">
    <div class="col-1">
        <div class="gallery">
            <div th:each="imgg :${product.id}+img">
                <p th:text="${imgg.getSrc()}"></p>
            </div>
            <div class="desc">
                <p th:text="${product.name}"></p>
            </div>
        </div>
    </div>
</div>

控制器是:

@GetMapping("/")
public String dashboard(ModelMap model) {
  List < CpuProduct > CpuProducts = cpurepo.findAll();

  model.put("products", CpuProducts);

  CpuProducts.forEach(prod ->{

    model.put(prod.getId() + "img", prod.getPhotos());
  });

  return "index";
}

CpuProduct 类是:

    package com.deiutz.BuildIT.User.products;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OrderColumn;

@Entity
public class CpuProduct {

    private long id;
    private double price;
    private String description;
    private String model;
    private String name;
    private Set<Image> photos;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public long getId() {
        // TODO Auto-generated method stub
        return id;
    }

    public void setId(long id) {
        this.id = id;

    }

    public double getPrice() {
        // TODO Auto-generated method stub
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }


    public String getDescrpiton() {

        return description;
    }


    public void setDescrpiton(String description) {
        this.description = description;

    }


    public String getModel() {

        return model;
    }


    public void setModel(String model) {
        this.model = model;

    }


    public String getName() {

        return name;
    }


    public void setName(String name) {
        this.name = name;

    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "product")
    @OrderColumn
    public Set<Image> getPhotos() {
        return this.photos;
    }


    public void setPhotos(Set<Image> photos) {
        this.photos = photos;

    }


}

图像类是:

    package com.deiutz.BuildIT.User.products;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity

public class Image {

    private long id;
    private byte[] foto;
    private CpuProduct product;
    private String src = "img/" + id;


    public byte[] getFoto() {
        return foto;
    }

    public void setFoto(byte[] foto) {
        this.foto = foto;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public long getId() {
        return id;
    }


    public void setId(long id) {
        this.id = id;
    }

    @ManyToOne()
    public CpuProduct getProduct() {
        return product;
    }

    public void setProduct(CpuProduct product) {
        this.product = product;
    }

    public String getSrc() {
        return src;
    }

    public void setSrc(String src) {
        this.src = src;
    }

}
开发进度

我不确定是什么导致了你的问题。可能您无法通过在模板中添加两个字符串来访问模型映射中的变量,它只会将其连接为字符串。

另一方面,我可以为您提供一个解决方案(一个更干净的解决方案)。简而言之,让我们在一个模型中放入一张按产品 id 映射的照片地图,而不是按包含照片的产品 id 放置“n”个模型。

model.put("products", cpuProducts);

Map<Integer, List<Photo>> photosByProduct = cpuProducts.stream()
            .collect(Collectors.toMap(CpuProduct::getId, CpuProduct::getPhotos));

//          Or using forEach
//
//          Map<Integer, List<Photo>> photosByProduct = new HashMap<>();
//          cpuProducts.forEach(cpuProduct -> {
//              photosByProduct.put(cpuProduct.getId(), cpuProduct.getPhotos())
//          });

model.put("photos", photosByProduct);

<div th:each="product: ${products}">
    <div class="col-1">
        <div class="gallery">
            <div th:each="photo: ${photos.get(product.id)}">
                <p th:text="${photo.src}"></p>
            </div>
            <div class="desc">
                <p th:text="${product.name}"></p>
            </div>
        </div>
    </div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Regex从.java文件中获取字符串

使用java从字符串中获取单个对象

如何使用Java流从HashMaps的ArrayList中获取字符串

JAVA:无法使用xor获取字符串中的加密数据

使用Java通过行号在文本文件中获取字符串?

Spring Boot无法使用Java配置更改Thymeleaf模板目录

使用Java Spring Boot Thymeleaf从变量显示漂亮的打印JSON

Java Spring Thymeleaf如何在容器外部使用变量

使用 thymeleaf 遍历 Java 列表

通过在jtextfield中获取字符串,在Java中使用LIKE选择所有数据

使用 Thymeleaf + Spring boot 和 Java 从网页中检索布尔值

如何使用Java在每个pdf文件中具有不同索引的两个字符串之间获取字符串

使用Java Swing在JTable上获取字符串值而不是复选框?

Java试图使用SuperCSV来获取字符串并创建pojo

在 Java 中使用 for 循环获取字符串索引超出范围

Java使用JSoup从html获取字符串列表

使用Thymeleaf和JQuery AJAX使用Java Spring MVC实现Antibot Captcha

使用JAVA读取字符串中的2个字母

避免使用Java在Thymeleaf中转义特殊字符

使用帮助JSON返回字符串(Java和Spring)

如何使用 Groovy/Java 从文本(字符串)中获取特定字符串?

使用 thymeleaf 从 URL 访问数据到 java?

如何在不使用方法字符串名称的情况下获取Java中的Method对象

使用Thymeleaf和Java Spring时如何检查输入是否为数字?

我可以在我的 java Spring + Thymeleaf 项目中使用 Tabulator js 库吗?

如何在Thymeleaf / HTML中将Checkbox与Java + Spring一起使用?

在Java的“ adfadf [somestring] get-this adfaf”中使用正则表达式获取字符串“ get this”

收集列表<对象>地图<字符串,列表<对象>>中的Java 8中使用流

使用ThymeLeaf使用字符串值访问对象