Witam wszystkich,
pierwszy raz pojawił mi się problem podczas robienia CRUDa, gdy chce dodać Usera
wyskakuje mi NullPointerException
i nie mogę go za nić zlokalizować.
Gdy odpalam Debuggera i wysyłam fomularz to wskazuje mi ze UserService
jest null
`
@Controller
@RequestMapping("/user")
public class UserController {
private UserService userService;
@GetMapping("/add")
public String saveUser(Model model) {
User user=new User();
model.addAttribute("user",user);
return "/client/add";
}
@PostMapping("/add")
public String saveUser2(@Valid User user) {
userService.save(user);
return "/index";
}
@Entity
@Table
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String email;
private String password;
}
@Service
@Transactional
public class UserService {
private UserRepository userRepository;
public User save(User user) {
return userRepository.save(user);
}
public User update(User user) {
return userRepository.findById(user.getId()).map(userdb -> {
if (user.getEmail() != null) {
userdb.setEmail(user.getEmail());
}
return userRepository.save(userdb);
}).orElse(null);
}
public void delete(long id){
userRepository.deleteById(id);
}
public User findByUserId(long id){
return userRepository.findById(id).orElse(new User());
}
}
<body class="card text-center">
<form action="#" th:action="@{/user/add}" th:object="${user}" method="post">
<div class="form-group">
<input type="text" th:field="*{email}" />
<span th:if="${#fields.hasErrors('email')}" th:errors="*{email}">First Name
Error</span>
</div>
<div class="form-group">
<input type="text" th:field="*{password}" />
<span th:if="${#fields.hasErrors('password')}" th:errors="*{password}">Last Name
Error</span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">ADD</button>
</div>
</form>
</body>