为了账号安全,请及时绑定邮箱和手机立即绑定

百里香的不同行为(通过数据库和resttemplate)

百里香的不同行为(通过数据库和resttemplate)

哈士奇WWW 2023-09-06 16:15:38
大家。我有两个应用程序。第一个是 CRUD spring boot JPA Web mvc 应用程序。它与这些代码一起工作得很好。(通过存储库数据库)@RequestMapping(value = { "/newUser" }, method = RequestMethod.GET)public String newUser(ModelMap model) {    User user = new User();    List<UserProfile> roles = userProfileRepository.findAll();    model.addAttribute("user", user);    model.addAttribute("allRoles", roles);    return "registration";}@RequestMapping(value = { "/newUser" }, method = RequestMethod.POST)public String saveUser(@Valid User user, BindingResult result,                       ModelMap model) {    if (result.hasErrors()) {        List<UserProfile> roles = userProfileRepository.findAll();        model.addAttribute("allRoles", roles);        model.addAttribute("user", user);        return "registration";    }    userRepository.save(user);    return "registrationsuccess";}Registration.html 的一部分是                    <select class="form-control input-sm" id="userProfiles" name="userProfiles" multiple="multiple" th:required="true">                        <option th:each="role : ${allRoles}"                                th:value="${{role}}"                                th:text="${role.type}"                                th:selected="${role.id == 1}"                        >Role                        </option>                    </select>上面的代码工作正常。第二个应用程序是基于resttemplate的spring boot@RequestMapping(value = { "/newUser" }, method = RequestMethod.GET)public String newUser(ModelMap model) {    User user = new User();    RestTemplate restTemplate = new RestTemplate();    List<UserProfile> userProfiles = Arrays.asList(restTemplate.getForObject("http://localhost:8080/api/roles", UserProfile[].class));    ArrayList<UserProfile> roles = new ArrayList<>(userProfiles);    model.addAttribute("user", user);    model.addAttribute("allRoles", roles);    return "registration";}多重选择形式与第一个应用程序相同(相同)但是第二个应用程序在调用registration.html时抛出异常附言。我已经通过 PostMan 测试了所有方法(PUT、GET、DELETE 和 POST)。而且效果很好。我不明白百里香的不同行为..
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

删除双括号语法,th:value="${{role}}"如堆栈跟踪中所述。

双括号应用转换服务,通常用于日期等内容。这位于文档的数据转换部分。


查看完整回答
反对 回复 2023-09-06
?
撒科打诨

TA贡献1934条经验 获得超2个赞

我刚刚实现了 org.springframework.core.convert.converter.Converter;


@Component

public class RoleToUserProfileConverter implements Converter<Object, UserProfile>{


    @Autowired

    UserProfileService userProfileService;


    public UserProfile convert(Object element) {

        Integer id = Integer.parseInt((String)element);

        return userProfileService.findById(id);

    }

}

并稍微修改了这个表格


                <select class="form-control input-sm" id="userProfiles" name="userProfiles" multiple="multiple" th:required="true">

                    <option th:each="role : ${allRoles}"

                            th:value="${role.id}"

                            th:text="${role.type}"

                            th:selected="${role.id == 1}"

                    >Role

                    </option>

                </select>

所以现在,thymeleaf 将值转换为对象。谢谢大家!


查看完整回答
反对 回复 2023-09-06
  • 2 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信