无法在null上找到属性或字段“email”

时间:2018-02-16 00:26:36

标签: java spring-mvc spring-boot bootstrap-4 thymeleaf

我正在尝试从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'的普通目标对象都不能作为请求属性'错误。

2 个答案:

答案 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();
}