Thymeleaf复选框没有传递值
两个问题。
- 我有User和Note课程。 用户可以有很多笔记。 如何通过Thymeleaf展示属于用户的每个笔记? th:text =“$ {u.notes.id}”不起作用
- 我有一个表(见图),每个用户的复选框都有boolean isUserChecked值,下面是删除已检查用户的按钮。 Thymeleaf正确显示isUserChecked值的状态。 当我手动选中复选框时,删除按钮不起作用,但是当我在代码中设置isUserChecked值时,该按钮有效。 问题在于我的Thymeleaf语法中的这个复选框。
截图:
HTML
Id Username First name Last name Password (Hash) Role Notes Select
更新1
正如@Metroids提到的第一个问题可以修复:
0 ? ', ' : '') + note.id}" />
第二个问题。 在我的html中使用它:
我需要具有属性List listOUsers
UserWrapper类。 但是怎么做呢? 我创建了这样的东西:
@Component public class UserWrapper { @Autowired UserService userService; List listOfUsers = userService.findAll(); public List getListOfUsers() { return listOfUsers; } public void setListOfUsers(List listOfUsers) { this.listOfUsers = listOfUsers; } }
这是我的这个页面的控制器:
@Controller public class UserController { @Autowired UserService userService; @Autowired UserWrapper userWrapper; @RequestMapping("/users") public String home(Model model){ List listOfUsers = userService.findAll(); model.addAttribute("listOfUsers", listOfUsers); return "users"; } @RequestMapping(value = "users", method = RequestMethod.POST) public String deleteUser(User user, Model model){ userService.deleteCheckedUser(user); return "redirect:/users"; } }
在此之后我有错误:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userWrapper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userWrapper' defined in file [C:\Users\luk89\Desktop\Java\STS Projects\StickyNotes\target\classes\com\twistezo\models\UserWrapper.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.twistezo.models.UserWrapper]: Constructor threw exception; nested exception is java.lang.NullPointerException
更新2
用户控制器:
@Controller public class UserController { @Autowired UserService userService; @Autowired UserWrapper userWrapper; @RequestMapping("/users") public String home(Model model){ List listOfUsers = userService.findAll(); userWrapper.setListOfUsers(listOfUsers); for(User u : userWrapper.getListOfUsers()){ System.out.println("username: " +u.getUsername()+ ", checked?: " +u.isUserChecked()); } model.addAttribute("listOfUsers", listOfUsers); model.addAttribute("userWrapper", userWrapper); return "users"; } @RequestMapping(value = "/users", method = RequestMethod.POST) public String deleteUser(@ModelAttribute UserWrapper userWrapper, Model model){ for(User u : userWrapper.getListOfUsers()){ System.out.println("username: " +u.getUsername()+ ", checked?: " +u.isUserChecked()); } userService.deleteCheckedUser(userWrapper); return "redirect:/users"; } }
从我的服务类中删除方法:
@Override public void deleteCheckedUser(UserWrapper userWrapper) { for(User u : userWrapper.getListOfUsers()){ if(u.isUserChecked() == true){ this.userDAO.delete(u.getId()); } } }
结果:
username: user1, checked?: false username: user2, checked?: false username: user3, checked?: false username: user4, checked?: false username: user5, checked?: false username: asd, checked?: false username: qwe, checked?: false username: xcv, checked?: false username: ghj, checked?: false username: dfh, checked?: false username: n, checked?: false username: ed, checked?: false username: null, checked?: true username: null, checked?: false username: null, checked?: false username: null, checked?: false username: null, checked?: false username: null, checked?: false username: null, checked?: false username: null, checked?: false username: null, checked?: false username: null, checked?: false username: null, checked?: false username: null, checked?: true
Thymeleaf部分现在很棒,但是当我在控制器中调用POST方法时,我的userWrap列表没有值。 我正在尝试复制
List listOfUsers = userService.findAll(); userWrapper.setListOfUsers(listOfUsers);
POST方法但有情况:用户名:好,检查?:不听鼠标点击复选框(所有值都为假)。
对于列表,您需要添加另一个循环的每个注释的ID。 例如,而不是
你需要类似的东西。
–
对于复选框。 你需要做很多改变……
- 所有复选框都必须位于
标记内。
- 您需要一个具有用户列表作为属性的命令对象…我认为您不能使用Java List作为命令对象。 需要将其指定为
标记上的th:对象。
- 实际复选框的html应如下所示:
HTML
调节器
@Controller public class UserController { @Autowired UserService userService; @RequestMapping("/users") public String home(Model model){ List listOfUsers = userService.findAll(); UserWrapper userWrapper = new UserWrapper(); userWrapper.setListOfUsers(listOfUsers); model.addAttribute("listOfUsers", listOfUsers); model.addAttribute("userWrapper", userWrapper); return "users"; } @RequestMapping(value = "users", method = RequestMethod.POST) public String deleteUser(@ModelAttribute UserWrapper userWrapper, Model model){ userService.deleteCheckedUser(userWrapper.getListOfUsers()); return "redirect:/users"; } }
Java的
public class UserWrapper { List listOfUsers = new ArrayList<>(); public List getListOfUsers() { return listOfUsers; } public void setListOfUsers(List listOfUsers) { this.listOfUsers = listOfUsers; } }
- 如何使用SolrJ获取solr服务器中所有核心的列表
- 大型列表的正则表达式优化
- SBT:将输入预先应用于inputKeys
- 用于安装R软件包的备用编译器:clang:错误:不支持的选项’-fopenmp’
- 在ObservableList上调用clear()会导致IndexOutOfBoundsException
- 吃豆子打开/关闭嘴动画
- 更改单元格颜色而不更改其他单元格中的颜色(Jtable)
- 有什么样的轻量级选项可以持久化Java对象
- 无法在NetBeans中创建Java Web应用程序
Interesting Posts
在Portlet环境中使用jsp:param / c:param
如何使用Java 8流制作笛卡尔积?
EntityManager.flush()在Java Web服务中提交事务
this.getClass()。getClassLoader()。getResourceAsStream总是返回null
尽管有足够的可用内存,但巨大的数组会丢失内存
如果我对Thread.interrupt()的调用不起作用,如何正确停止一个线程?
使用Gson反序列化Java 8 LocalDateTime
更改intellij窗格的背景颜色
用于hashCode / equals契约的JUnit理论
Jackson JSON生成HTTP状态500,XML工作