我为用户注册创建了简单的Thymeleaf表单模板。当我点击SubmitForm按钮时,POST请求被发送(正如我在浏览器日志中看到的),但它从未由saveRegistration控制器方法处理,并用(method=RequestMethod.POST)注释
Spring版本4.2.2,Spring Security4.0.2,Spring Boot启动器1.2.7模型对象使用Hibernate验证器(如果有意义)
控制器代码:
package org.vmtest.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.vmtest.web.model.User;
import javax.validation.Valid;
import java.util.*;
/**
* Created by victor on 24.10.15.
*/
@Controller
@RequestMapping("/register")
public class RegistrationController {
@RequestMapping(method = RequestMethod.GET)
public String newRegistration(ModelMap model) {
User user = new User();
model.addAttribute("user", user);
return "register";
}
@RequestMapping(method = RequestMethod.POST)
public String saveRegistration(@Valid User user, BindingResult result, ModelMap model){
if(result.hasErrors()) {
return "register";
}
model.addAttribute("success", "Dear "+ user.getFirstName()+" , your Registration completed successfully");
return "redirect:/login";
}
@ModelAttribute("countries")
public Map<String, String> initializeCountries() {
Map<String, String> countries = new TreeMap<>();
String[] locales = Locale.getISOCountries();
for (String countryCode : locales) {
Locale obj = new Locale("", countryCode);
countries.put(obj.getDisplayCountry(), obj.getCountry());
}
return countries;
}
}
胸腺模板:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<style>
form {
position: absolute;
top: 20%;
left: 40%;
margin-top: -50px;
margin-left: -50px;
width: 300px;
height: 100px;
}
</style>
</head>
<body>
<div>
<form action="#" th:action="@{/register}" th:object="${user}" method="post">
<div>
<h2>New user registration</h2>
</div>
<div>
<table style="width:300px">
<tr>
<td>Login</td>
<td><input type="text" th:field="*{userName}" name="username"/></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" th:field="*{password}" name="password"/></td>
</tr>
<tr>
<td>First Name</td>
<td><input type="text" th:field="*{firstName}" name="firstname"/></td>
</tr>
<tr>
<td>Last Name</td>
<td><input type="text" th:field="*{lastName}" name="lastname"/></td>
</tr>
<tr>
<td>E-Mail</td>
<td><input type="text" th:field="*{email}" name="email"/></td>
</tr>
<tr>
<td>Street address</td>
<td><input type="text" th:field="*{street}" name="street"/></td>
</tr>
<tr>
<td>City</td>
<td><input type="text" th:field="*{city}" name="city"/></td>
</tr>
<tr>
<td>State/province</td>
<td><input type="text" th:field="*{state}" name="state"/></td>
</tr>
<tr>
<td>Country</td>
<td>
<select th:field="*{country}">
<option th:each="sopt:${countries.entrySet()}"
th:value="${sopt.value}" th:text="${sopt.key}">Japan</option>
</select>
</td>
</tr>
<tr>
<td>Post code</td>
<td><input type="text" th:field="*{postCode}" name="postcode"/></td>
</tr>
<tr>
<td>Phone number</td>
<td><input type="text" th:field="*{phone}" name="phone"/></td>
</tr>
<tr>
<td>Don't have account?</td>
<td><button type="submit">Register</button></td>
</tr>
</table>
</div>
</form>
</div>
</body>
</html>
我认为这是可行的,但是你没有在用户登录页面上打印成功消息。
这是因为您正在设置模型属性并重定向到另一个页面。
model.addAttribute("success", "Dear "+ user.getFirstName()+" , your Registration completed successfully");
return "redirect:/login";
我不认为如果发生这种情况,您将获得模型属性传递到重定向页面。
相反,您可以使用重定向属性
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/support/RedirectAttributes.html
@RequestMapping(method = RequestMethod.POST)
public String saveRegistration(@Valid User user, BindingResult result, RedirectAttributes redirectAttrs) {
if(result.hasErrors()) {
return "register";
}
redirectAttrs.addAttribute("success", "Dear "+ user.getFirstName()+" , your Registration completed successfully");
return "redirect:/accounts/{id}";
}
我有一个主控制器来处理我的主控制器。fxml和处理弹出窗口的第二个控制器。fxml 从主控制器按下按钮时,弹出窗口出现。在弹出窗口中添加玩家。玩家通过textfield添加到数组中,并且必须发送回主控制器。我在弹出控制器中有一个名为“Btnaply”的按钮,当按下该按钮时,我想关闭弹出窗口并从主控制器类处理数组。我只想让我的主控制器类知道弹出窗口。 这是我从主控制器创建弹出窗口的方式: 现在的问题
我目前正在尝试创建一个控制器,以便使用Thymeleaf与html文件交互。过了一会儿,我注意到也许我的控制器(更具体地说是@PostMapping)根本没有与我的html页面交互。我之所以这样认为,是因为无论我以电子邮件/密码的形式输入什么(正确或错误),它都会将我链接到(/登录?错误)。我测试了一个简单的条件,一旦调用Post请求,它会在html页面上打印“HERE”,以查看情况是否属实。打印
在中,但它似乎对我不起作用。 环境:,,
伙计们,在我的控制器中执行rest后,我有问题从变量中获取数据。这里有一个例子来说明我的问题。 控制器 JavaScript drawDiagram.html null
我正在从事一个项目,该项目使用处理从文件中读取数据,然后使用串行将这些数据发送到arduino Uno板,然后将这些值提供给arduino braccio braccio。ServoMovement()函数,根据它们移动机械臂。然而,每当我运行代码时,我总是在函数中输入错误的值,并且手臂以一种奇怪的方式移动,我测试了相同的代码,并试图点亮一个led,但出于某种原因,它工作正常。 Arduino代码
我一直在尝试使用: 使用此链接: 但我有一个错误: 当我换成: 是工作。我能做些什么来和日期一起工作? 谢啦