ajax - $.ajax => @ModelAttribute = null
问题描述
我是一名学习Java的学生。
我正在学习和练习,但我问你一个问题,因为我有一个问题。
- 通过 $.ajax 从 join.jsp 发送(用户名、密码、irum、电子邮件)到控制器
- 从Controller获取@ModelAttribute并交给Service
- 输入服务作为插入数据库我正在考虑一些事情。
此外
- 不发送电子邮件。
- ID 和密码规则不适用。
我会写下代码。
加入.jsp
$("#join_btn").on("click", function() {
var formData = new FormData($("#join_form")[0]);
for(var item of formData.entries()) { // Normal output
console.log(item [0]+ ' : '+ item [1]);
}
alert("콘솔확인용"); // Normal output
$.ajax({
url: "/www/users/user",
method: "post",
data: formData,
contentType: false,
processData: false
}).done(()=>{alert("succ")})
.fail(()=>{alert("fail")}); // "fail" output
});
↓</p>
↓ 控制器
@PostMapping("/users/user")
public ResponseEntity<?> join(@ModelAttribute UserDto.Join dto) {
System.out.println("==============================================");
System.out.println("dto : " + dto); // null output
service.join(dto);
return ResponseEntity.ok(null);
}
↓</p>
↓ 服务
@Service
public class UserRestService {
private UserDao userDao;
private ModelMapper modelMapper;
@Transactional
public void join(UserDto.Join dto) {
User user = modelMapper.map(dto, User.class); // (dto, entity)
userDao.insert(user);
}
}
dto
@NoArgsConstructor
public class UserDto {
@Data
public static class Join {
private String username;
private String password;
private String irum;
private String email;
}
}
道
public interface UserDao {
public User findById(String username);
public User findByEmail(String email);
public int insert(User user);
}
实体
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Accessors(chain=true)
public class User {
private String username;
private String password;
private String irum;
private String email;
}
用户映射器
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-
mapper.dtd">
<mapper namespace="com.iciamall.www.dao.UserDao">
<insert id="insert">
insert into users(username, password, irum, email)
values(#{username}, #{password}, #{irum}, #{email})
</insert>
==================================================== ==================================================== =====
控制器 System.out.println("dto : " + dto); => UserDto.Join(用户名=null,密码=null,irum=null,电子邮件=null)
控制台 => [请求处理失败;嵌套异常是 java.lang.NullPointerException:无法调用“com.iciamall.www.service.UserRestService.join(com.iciamall.www.dto.UserDto$Join)”,因为“this.service”为空]
解决方案
推荐阅读
- tomcat - 无法使用本地主机打开 Jira
- arrays - 在索引处查找对象值并使用 swift 将其存储在不同的数组中
- python - 如何遍历 django 模板中的列表
- r - 在 nlme 中初始化相关结构时出错
- powershell - 递归迭代文件
- python - 查找百分比值数字和/或包含任意数量字符串的左括号时要拆分的 pandas 列
- oracle - 与在线 md5 生成器相比,MD5 oracle 函数提供不同的输出
- java - 如何根据多个子 div 找到父 div 的 xpath?
- javascript - 如何在多维javascript对象中获取关键dan值
- android - Android workmanager 作业在应用程序关闭后不运行(三星 s9+)