java - 我从注册面板获取空值到我的数据库
问题描述
我正在尝试将有关注册用户/客户端的数据保存到数据库,但我得到的是空值。我一直在寻找导致这种情况的原因,但我不知道我做错了什么。我已经发布了我的四个课程。
在 IntelljIDEA 我有这样的休眠查询
Hibernate:
select
nextval ('client_sequence')
Hibernate:
insert
into
client
(email, firstName, lastName, phoneNumber, age, appUserRole, gender, loginName, password, id)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
注册控制器
package com.example.demo.registration;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/registration")
@AllArgsConstructor
public class RegistrationController {
RegistrationService registrationService;
/* HTTP GET Request for read registartion.html page from server */
@GetMapping
public String showRegistrationPanel() {
return "registration";
}
/* HTTP POST Request for insert data to database on server */
@PostMapping
public String register(@ModelAttribute("client") RegistrationDTO request, Model model) {
registrationService.register(request);
model.addAttribute("client",request);
return "redirect:/registration?success";
}
}
注册服务
package com.example.demo.registration;
import com.example.demo.client.AppUserRole;
import com.example.demo.client.Client;
import com.example.demo.client.ClientService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
public class RegistrationService {
/* */
private final ClientService clientService;
/* */
private final EmailValidator emailValidator;
/* Method register new user to system */
public Client register(RegistrationDTO request) {
/* Check if Email is valid */
/* boolean isValidEmail = emailValidator.test(request.getEmail());
if(!isValidEmail) {
throw new IllegalStateException("email not valid");
} */
/* This method uses clientService to register new client */
return clientService.signUpClient(
new Client(
request.getFirstName(),
request.getLastName(),
request.getEmail(),
request.getPhoneNumber(),
request.getLoginName(),
request.getPassword(),
AppUserRole.USER
)
);
}
}
客户服务
package com.example.demo.client;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("clientService")
@AllArgsConstructor
@Data
public class ClientService implements UserDetailsService {
private final static String USER_NOT_FOUND = "user with email %s not found";
private final ClientRepository clientRepository;
private final BCryptPasswordEncoder bCryptPasswordEncoder;
public List<Client> getClients() {
return clientRepository.findAll();
}
public void saveClient(Client client) {
clientRepository.save(client);
}
public void deleteClient(Client client) {
clientRepository.delete(client);
}
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
return clientRepository.findByEmail(username).
orElseThrow(() ->
new UsernameNotFoundException(String.format(USER_NOT_FOUND)));
}
public Client signUpClient(Client client) {
// String encodedPassword = bCryptPasswordEncoder.encode(client.getPassword());
// client.setPassword(encodedPassword);
return clientRepository.save(client);
}
}
}
客户
package com.example.demo.client;
import lombok.*;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import java.util.Collection;
import java.util.Collections;
@Entity
@Table(name="client",uniqueConstraints = @UniqueConstraint(columnNames = "email"))
@AttributeOverrides({
@AttributeOverride(name="Id",column=@Column(name="Id")),
@AttributeOverride(name="firstName",column=@Column(name="firstName")),
@AttributeOverride(name="lastName",column=@Column(name="lastName")),
@AttributeOverride(name="email",column=@Column(name="email")),
@AttributeOverride(name="phoneNumber",column=@Column(name="phoneNumber"))
})
@Getter
@Setter
@ToString
@EqualsAndHashCode
@NoArgsConstructor
public class Client extends Person implements UserDetails {
@Column(name="age")
private int age;
@Column(name="gender")
private String gender;
@Column(name="loginName")
private String loginName;
@Column(name="password")
private String password;
@Enumerated (EnumType.STRING)
private AppUserRole appUserRole;
public Client(String firstName, String lastName, String email,
String phoneNumber, String loginName,String password,AppUserRole appUserRole) {
super(firstName, lastName, email, phoneNumber);
this.loginName = loginName;
this.password = password;
this.appUserRole = appUserRole;
}
public Client(String firstName, String lastName, String email,
String phoneNumber, int age, String gender,
String loginName,String password,AppUserRole appUserRole) {
super(firstName, lastName, email, phoneNumber);
this.age = age;
this.gender = gender;
this.loginName = loginName;
this.password = password;
this.appUserRole = appUserRole;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
SimpleGrantedAuthority authority =
new SimpleGrantedAuthority(appUserRole.name());
return Collections.singletonList(authority);
}
@Override
public String getPassword() {
return password;
}
@Override
public String getUsername() {
return loginName;
}
}
解决方案
推荐阅读
- javascript - .替换功能不起作用 - 使用谷歌表格脚本编辑器的自动邮件模板
- r - 为什么是NA | 错误 = 不适用?
- react-native - 带有 React Native 视频的自定义播放/暂停按钮 - 获取 JSON 值错误消息
- python - 在 python 图中将 2^n 转换为数值
- tensorflow - 计算 YAMNET 中某一层的梯度
- c# - Razor 页面中的相同 URL 端点
- html - 输入元素(由 vuetify 生成)不会为长文本换行
- php - 如何在 php 中使用 http 身份验证 cURL SSL URL?
- autodesk-forge - 使用 Revit API 和设计自动化从模板文件创建项目文件
- laravel - Laravel Eloquent 是否支持回调?