首页 > 解决方案 > 如何使用 Thymeleaf 获取对象

问题描述

我想使用 Thymeleaf 模板生成用户对象。我怎样才能做到这一点?我有一个包含以下信息的用户类。

package com.rhv.um.model;

import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "firstname")
    private String firstName;
    @Column(name = "lastname")
    private String lastName;
    @Column(name = "email")
    private String email;
    @Column(name = "mobile")
    private Long mobile;
    @Column(name = "username")
    private String username;
    @Column(name = "password")
    private String password;
    @Transient
    private String confirmPassword;
    @Column(name = "isenable", columnDefinition = "boolean default 1")
    private boolean isEnable;
    @Column(name = "reason")
    private String reason;
    @ManyToMany
    @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "roles_id"))
    private Set<Role> roles;

//Getter and Setter
}

我也有一个 UserRepository 类和 UserService 类。UserService 类如下。UserRepository 类与 UserService 类相同

package com.rhv.um.service;

import java.util.List;

import com.rhv.um.model.User;

public interface UserService {
    void save(User user, boolean updatePassword);
    List<User> findAll();
    User findByUsername(String username);
}

现在我想使用 UserService 类的 findByUsername(String username) 方法从 thymeleaf 创建一个 User 对象。我想从中获取当前登录用户的详细信息。

因为我正在使用 SpringSecurity5。我可以从 thymeleaf 获取当前登录的用户,如下所示。

<span th:text="${#authentication.getPrincipal().getUsername()}"></span>

我想将此用户名传递给我的方法并获取 User 对象。不仅是当前登录的用户。我确实需要获取系统中其他用户的用户对象。

我知道以下几种方法。

  1. 在 cookie 中设置当前登录用户的值并从 UI 中获取。
  2. 在会话中设置当前登录用户的值并从 UI 中获取。
  3. 将 User 对象设置为模型属性,然后使用 UI 中的对象。

使用上述方法,我的目的得到解决。但我想从百里香中设置对象。我该怎么做?

我曾尝试使用 th:with of thymeleaf。它对我不起作用

<div th:if="${userCredentials == null}" th:with="userCredentials=${T(your.package.here.UserCredentials).create()}"></div>

上面代码行的帖子在这里

如果需要更多信息,请告诉我。如果我在这里做错了什么,也可以用代码指导我。

标签: javaspring-bootspring-securityspring-data-jpathymeleaf

解决方案


推荐阅读