我正在尝试使用表单更新用户名。问题是,当我使用@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>
在您的代码中/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