当前位置: 首页 > 知识库问答 >
问题:

百里香叶:在注册表单 Springboot 中解析用户凭据时出错

澹台星光
2023-03-14

我需要填写SpringBoot的登记表。为此,我创建了两个类:< code>User和< code>Credentials,第二个类处理唯一的用户名和密码。

@Getter
@Setter
@Entity
@Table(name = "users")
public class User {

    public User() {}

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    
    private String username;

}
public class Credentials {
    
    public static final String DEFAULT_ROLE = "DEFAULT";
    public static final String ADMIN_ROLE = "ADMIN";
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Getter
    @Column(nullable = false, unique = true)
    private String username;
    
    @Getter
    @Column(nullable = false)
    private String password;
    
    @Getter
    @Setter
    @Column(nullable = false)
    private String role;
    
    @OneToOne(cascade = CascadeType.ALL)
    private User user;

}

这是registrationController(处理“/registration”请求):

@Controller
public class RegController {
    @GetMapping("/register")
    public String register(Model model){
        model.addAttribute("user", new User());
        model.addAttribute("credentials", new Credentials());
        return "register";
    }
}

现在应该已经准备好了,可以从html表单读取数据,并使用thymeleaf注册新用户。这是<code>注册中的注册表格。html</code>,我的目标是读取用户名和密码,然后创建一个新用户并将其保存在Postgres上:

<body>
    <div class="login">
    <form id="login" method="POST" th:action="@{/register}">
        <label><b>User Name   
        </b>
        </label>
        <input type="text" name="Uname" id="Uname" placeholder="Username" required th:field="${credentials.username}">    
        <br><br>    
        <label><b>Password     
        </b>    
        </label>    
        <input type="Password" name="Pass" id="Pass" placeholder="Password" required th:field="${credentials.password}">    
        <br><br>
        <label><b>Repeat Password     
        </b>    
        </label>    
        <input type="Password" name="RPass" id="RPass" placeholder="Password">    
        <br><br>
        <button type="submit" class="btn btn-primary" id="log">Registrati</button>
        <div style = "background-color:green">
            <a id= "link" th:href="@{/login}" >or login</a>   
        </div>     
    </form>
</div>    
</body>    

但是当我导航到registration.html这是来自Tomcat的错误:

Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: 
An error happened during template parsing (template: "class path resource [templates/register.html]")

我注意到的是,如果我删除了所有th:field(用于获取用户输入),页面将显示无错误。

共有1个答案

邵轶
2023-03-14

我注意到您的凭据类只有用户名和密码获取器。如果百里香叶必须用用户输入来填充它们,你不应该也提供二传手吗?


    @Getter
    @Setter
    @Column(nullable = false, unique = true)
    private String username;
    
    @Getter
    @Setter
    @Column(nullable = false)
    private String password;
    
 类似资料:
  • 我不知道我的视图出了什么问题,但它不可能工作,即使设置正确,视图也总是出错。我不知道是否还有其他方法可以做到这一点,但胸腔总是失败。 错误是这样的- 这是我的控制器 我的观点

  • 我尝试使用ThymeLeaf处理模板,但我得到。 这是我的代码: 我试图通过添加这样的前缀来更改路径,但它没有帮助: 此错误可能是由路径问题以外的其他原因引起的吗? 如果需要,我可以给我的项目结构的更多细节。 谢谢 编辑: 这是堆栈跟踪,它可能会有所帮助:

  • 我不明白,如果html模板与我在ModelAndView中获得的属性链接,如何将RESTFull服务的@Controller更改为@RestController 在胸腺叶模板中 但我想进入索引页面,在后台获取用户名 我可以使用ajax来更新标记“p”,但这样使用thymeleaf并没有什么好处,我可以使用jsp。那么,在Rest时使用thymeleaf的最佳方式是什么?它是否合理?

  • 我用百里香模板发送电子邮件。我有一个模板,比如: 如果为空或,我不想发送电子邮件。我可以设置任何Thymeleaf属性来生成错误并且不会发送邮件吗?因为在没有值的电子邮件中发送“My name is”没有任何意义。 我从Thymeleaf上下文中获取所有值,变量可能是不同类型的,例如、等。我也尝试了以下方法,但它并没有解决我的问题,因为对象总是可用的:

  • 我是Springboot的初学者,所以决定在购物车上工作。似乎找不到org.springframework.expression.spel.SpelEvalue ationException: EL1007E的根:在null上找不到属性或字段'name'。嵌套异常是org.thymeleaf.exceptions.TemplateProcessingException: Exception评估Sp

  • 根据thymeleaf安全页面,我可以获取记录的用户名和角色,如下所示: 我有一个Web应用程序,其中身份验证是使用目录完成的,如下所示: 然后,在用户登录后,我有一个标题页面,我在我的所有页面中使用上面的thymeleaf标签来显示用户名,但我想看看是否有办法显示全名。 这里建议的解决方案对我不起作用: 我正在使用: 和使用:<代码> 在类型org . spring framework . se