为什么spring boot中的控制器只接受json类型的数据,不接受从thymeleaf表单提交的数据?

时间:2018-03-25 14:02:33

标签: spring jpa model-view-controller thymeleaf

我无法通过索引页面提交表单,但我可以从邮递员那里提交。

当使用内容类型application / json从邮递员提交时,一切正常。从表单提交时,我收到了:

浏览器: “出现意外错误(type = Unsupported Media Type,status = 415)。 内容类型'application / x-www-form-urlencoded; charset = UTF-8'不受支持“

控制台:  由Handler执行引起的已解决异常:org.springframework.web.HttpMediaTypeNotSupportedException:内容类型'application / x-www-form-urlencoded; charset = UTF-8'不受支持

为什么需要json数据?我的表单也正确地将带有数据(名称)的对象城镇发送到控制器?

这是我在索引页面上的表格,它是用百里香书写的:

<form action="" th:action="@{/addTown}" th:object="${towns}" method="post">
    <input type="text" name="name" th:value="*{name}" />
    <input type="submit" name="submit" value="Add"/>
</form>

控制器:

public class Controller {
    @Autowired
    ServiceTowns serviceTowns;
    @PostMapping(value="/addTown")
    public ModelAndView addTown(@Valid @RequestBody Town town) {
        ModelAndView mv = new ModelAndView("success");
        mv.addObject(serviceTowns.addTown(judete));
        return mv;
    }
}

服务:

@Service
@Transactional
public class ServiceTowns {
    @Autowired
    RepTown repTown;
    public Towns addTown(Towns towns){
        return RepTown.save(towns);
    }
}

存储库:

public interface RepTown extends JpaRepository<Towns, Integer> {

}

模特:

@Entity
@Table(name="towns")
public class Towns {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name="name")
    private String name;

    public Towns(){}
    public Towns(String name){
        this.name= name;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name= name;
    }

}

1 个答案:

答案 0 :(得分:0)

handle form submission spring

也许你错过了一些依赖关系,这个链接可能有助于解决你的问题。