java - 模型类可以实现模型UI吗?
问题描述
到目前为止,在我使用 Spring Boot 的 Java 代码中,我使用模型或 POJO 对象来更好地控制我的对象等。通常我正在创建实体、存储库、服务、Rest 控制器,就像文档和课程所建议的那样。但是现在我正在使用 Thymeleaf 模板、HTML 和一些 Bootstrap 和 CSS 来创建浏览器界面。对于中的方法@Controller
,作为参数,我从 Spring Model UI 传递 Model,如下所示:
@GetMapping("/employees")
private String viewAllEmployees(Model employeeModel) {
employeeModel.addAttribute("listEmployees", employeeService.getAllEmployees());
return "employeeList";
}
我的问题是:如何使用我的 POJO 对象而不是 org.springframework.ui.Model;?
我的第一个猜测是:
public class EmployeeModel implements Model{
private long employeeId;
private String firstName;
private String lastName;
private String email;
private String phone;
private long companyId;
//getter and setter methods
}
为了做到这一点,我必须对适合我的@Override
方法建模。看起来 Java、Spring 等在编译时不会抱怨,我可以@Controller
像这样使用这个 POJO 对象:
@Controller
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@GetMapping("/employees")
private String viewAllEmployees(EmployeeModel employeeModel) {
employeeModel.addAttribute("listEmployees", employeeService.getAllEmployees());
return "employeeList";
}}
我运行代码并启动,显示我的 /home 端点,它很酷,但是当我想去我的 /employees 端点时,它应该显示我的员工列表,它会抛出这个:
Method [private java.lang.String com.bojan.thyme.thymeApp.controller.EmployeeController.viewAllEmployees(com.bojan.thyme.thymeApp.model.EmployeeModel)] with argument values:[0] [type=org.springframework.validation.support.BindingAwareModelMap] [value={}] ] with root cause java.lang.IllegalArgumentException: argument type mismatch
例外。
请注意,Rest 控制器在浏览器和 Postman 中运行良好。
字符串作为一种方法是否可能是问题所在?我的方法应该是其他类型,List<EmployeeModel>
还是EmployeeModel
本身?如果是这样,如何告诉方法我希望返回我的employeeList.html?
我真诚地希望有人能用这个来阻止我:)
解决方案
如何使用我的 POJO 对象而不是 org.springframework.ui.Model;?
当您使用 Thymeleaf 时,我认为这不是最佳做法。根据他们的文档,您应该将您的对象附加到您的模型。因此,在您的控制器中,您将操纵包含您的 Pojos 的模型。
例子:
@RequestMapping(value = "message", method = RequestMethod.GET)
public ModelAndView messages() {
ModelAndView mav = new ModelAndView("message/list");
mav.addObject("messages", messageRepository.findAll());
return mav;
}
推荐阅读
- wpf - PowerShell 中是否仍需要 Add-Type -AssemblyName PresentationFramework?
- java - 运行 HelloActivity Sample Temporal Java 程序时出错
- c# - 有没有办法检查模型中有多少特定属性?
- android - 如何以编程方式使用 R 获取私有 android res?
- c# - .Net smtp SendMailAsync 函数返回 IsCanceled
- email - 在 Sendmail Jilter 中,JilterConstants 中提到的各种缩写是什么意思
- mysql - 在github上发送代码时隐藏机密数据
- html - 无法更改 h1 大小
- reactjs - 使用 ref 更改组件道具
- sql - 在数据库中上传图片时如何修复 NullPointerException?