【问题标题】:Property or field 'email' cannot be found on null在 null 上找不到属性或字段“电子邮件”
【发布时间】:2018-07-26 20:53:00
【问题描述】:

我正在尝试从 Boostrap 模态中的表单发布。

这是我的表格:

            <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' 的普通目标对象都可用作请求属性'错误。

【问题讨论】:

  • 你的 GET RequestMapping 在哪里?
  • 我的愚蠢。我需要将模型属性添加到我的 NavController 中的“@GetMapping”中。谢谢@holmis83

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


【解决方案1】:

您必须将大学对象作为属性添加到控制器中的模型中:

@GetMapping(value = "/index") 
public String login(Model model) { 
    model.addAttribute("university", new University()); 
    return "index"; 
}

【讨论】:

    【解决方案2】:

    这是我为您准备的,希望对您有所帮助。如果您不明白,请告诉我,祝您晚安。

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

    当然,如果你愿意的话:

    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public Response post(@FormParam("attribute1") String attribute1, @FormParam("attribute2") String attribute2) {
      return Response.ok(service.persist(MyFactory.create(attribute1, attribute2))).build();
    }
    

    【讨论】:

    • 是的,我不太明白你在做什么。您是否正在使用 Spring/Tyhmeleaf 的功能?
    猜你喜欢
    • 2018-03-31
    • 2018-08-07
    • 2016-11-16
    • 1970-01-01
    • 2018-05-04
    • 2018-01-09
    • 2019-04-27
    • 2020-01-21
    • 2021-08-22
    相关资源
    最近更新 更多