当前位置: 首页 > 知识库问答 >
问题:

在Spring项目中使用@ModelAttribute时发生SpringInputGeneralFieldAttrProcessor

梁丘伟
2023-03-14

我正在尝试使用表单更新用户名。问题是,当我使用@modelattribute时,我会得到以下错误:

帐户控制器类:

@Controller
public class AccountController {

    @Autowired
    private UserService userService;

    @GetMapping("/account")
    public ModelAndView adminPage(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("account");
        //modelAndView.addObject("users", userService.getAllUsers());
        return modelAndView;
    }


    @PutMapping("/renameUsername")
    public ModelAndView renameUserName(@ModelAttribute("user") User newUserName) {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        String currentUser = auth.getName();
        userService.changeUsername(currentUser, newUserName);
        return new ModelAndView("account");
    }

模型用户类:

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@ToString
public class User {
    @Id
    private String logonName;
    private String firstName;
    private String lastName;
    @JsonIgnore
    private String password;
    private String recoveryQuestion;
    @JsonIgnore
    private String recoveryAnswer;

}

负责用户名更改的用户服务方式:

public  void changeUsername(String oldUserName, User newUserName) {
    User user = userRepository.findOne(oldUserName);
    user.setLogonName(newUserName.getLogonName());
    userRepository.save(user);
}
<div class="jumbotron">
  <form th:action="@{/renameUsername}" th:method="put" th:object="${user}">
    <dl class="row">
      <dt class="col-sm-5">
<p>Change username:</p>
<p class="description">Enter your username, which you will use to login</p>
</dt>
      <dd class="col-sm-7">
        <p>
          <label for="inputUser" class="sr-only">username</label>
          <input type="text" id="inputUser" class="form-control" name="logonName" th:field="*{logonName}" placeholder="Username" />
        </p>
        <p>
          <button type="submit" class="btn btn-sm btn-warning">Update username</button>a
        </p>
      </dd>
    </dl>
  </form>
</div>

共有1个答案

东郭海阳
2023-03-14

在您的代码中/modelandview.addobject(“users”,userservice.getallusers());。但在您的视图中

:

用户更改为用户

 类似资料:
  • 当登录失败时,我试图重定向登录页面上输入的用户名,但在我的控制器中,从“@modelattribute(”user“)”检索的用户的用户名为空。当我不使用spring security时,这是有效的。 我假设form实际上首先发送到spring security,然后重定向到控制器,因此在spring security之间输入的信息丢失。 编辑(解决方案): 谢谢。@James创建一个failur

  • 我创建了这个测试项目,由两个项目组成:一个使用spring-boot,一个使用Spring-MVC。它们中的每一个单独工作都很好。我想要做的是运行spring-boot,并能够通过加载spring-mvc项目的上下文来访问该项目的web页面。这个项目很简单,因为我只是想测试如何做混合。 问题是,当我运行spring-boot应用程序时,来自spring-mvc的页面无法访问,因为它没有在构建中添加

  • 最近我正在努力学习SpringMVC。似乎我没有很好地理解@SessionAttributes和@ModelAttribute注释的功能。 这是我的控制器的一部分: 基本上有一个jsp列出所有的项目。用户点击"addToCart"获取特定商品,该商品将被添加到购物车列表中。我最好先解释一下我对这个控制器的理解,你可以告诉我我没有得到什么。 第一次调用ItemController时,将执行creat

  • 问题内容: 我一直在使用spring-data开发RESTful Web服务。几天前,发布了一个特殊的spring-data jpa REST框架。 现在,我注意到可以在此框架中使用@Version了。该版本是自己生成的还是您需要手动执行? 可以单独使用@Version吗?(这样我就不必对现有的存储库/域等进行任何更改。) 我需要做一些额外的配置来使用@Version吗? 问题答案: 自从我发布这

  • 我有什么似乎是一个简单的问题,关于如何设置Jenkins和maven 3。 为了简单起见,假设我们有四个项目: 没有依赖关系的模型 Commons依赖于模型 服务器依赖于Common和模型 前端依赖于模型 我想要实现的是,一个成功的基于模型的构建触发所有项目的新构建,这些项目在其pom中依赖于模型(这里是公共的,服务器和前端) 如果Common失败,则无需构建服务器。 在上述情况下,我似乎可以通过

  • 问题内容: 我正在尝试在Spring应用程序中使用Hibernate进行Db访问。在依赖项出现一些问题(现已解决)之后,我可以正常运行我的项目,并且它的第一页对我打开(这是一个登录页面)。但是,当我将表单提交给服务器时(此请购单由spring控制器处理),我收到以下错误消息: 这是控制器处理请求的方法: 这是我的类HibernateConfig: 这是我的类DAO(UsuarioHome.java