我正在尝试从Boostrap模式中的表单进行POST。
这是我的表格:
<form role="form" id="emailForm" action="#" th:action="@{/emailSubmission}" th:object="${university}" method="post">
<div class="form-group">
<label for="emailID"><span class="glyphicon glyphicon-user"></span> Username</label>
<input type="text" class="form-control" id="emailID" th:value="*{email}" placeholder="Enter email"></input>
</div>
<button type="submit" value="Submit" id="submitButton" class="btn btn-default btn-success btn-block" ><span class="glyphicon glyphicon-check"></span> Register</button>
</form>
这是我的控制器:
@Controller
public class RegistrationController {
@RequestMapping(value = "/emailSubmission", method = RequestMethod.POST)
public String registerEmail(@ModelAttribute("university") University uni, BindingResult result, Model model)
{
System.out.println(uni.getEmail());
return "index";
}
}
我的大学课程:
public class University {
private String email;
public University(){
}
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email = email;
}
}
我是Spring的新手,无法弄清楚出了什么问题以及为什么我收到了标题中提到的错误。
改变:
th:value="*{email}"
为:
th:field="*{email}"
给了我'BindingResult和bean名称'university'的普通目标对象都不能作为请求属性'错误。
答案 0 :(得分:1)
您必须将大学对象作为属性添加到控制器中的模型中:
.publish().refCount()
答案 1 :(得分:-1)
这是我对你的所有,希望它有所帮助。如果你不明白,请告诉我,祝你有个美好的夜晚。
shared
或者如果您愿意:
target.request(MediaType.APPLICATION_JSON)
.post(Entity.json(Json.createObjectBuilder()
.add("attribute1", "value1")
.add("attribute2", "value2")
.build()));
现在该怎么做呢?
MultivaluedMap<String, String> map = new MultivaluedHashMap<>();
map.add("attribute1", "value1");
map.add("attribute2", "value2");
target.request(MediaType.APPLICATION_FORM_URLENCODED)
.post(Entity.form(map));
当然,如果您愿意:
@POST
public Response post(JsonObject json) {
return Response.ok(service.persist(MyFactory.create(json.getString("attribute1"), json.getString("attribute2"))).build();
}