当前位置: 首页 > 知识库问答 >
问题:

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

慕容光启
2023-03-14

我不能通过索引页提交表格,但我可以从邮递员那里提交。

当邮递员用内容类型应用程序/json提交时,一切都正常。当从表单提交,我得到:

浏览器:“出现意外错误(类型=不受支持的媒体类型,状态=415)。不支持内容类型“application/x-www-form-urlencoded;charset=UTF-8”

控制台:已解决由处理程序执行引起的异常:org。springframework。网状物HttpMediaTypeNotSupportedException:内容类型'application/x-www-form-urlencoded;字符集=UTF-8'不受支持

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

这是我在索引页上的表格,它是用thymeleaf编写的:

<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个答案

孟征
2023-03-14

处理表单提交spring

可能您缺少一些依赖项,此链接可能有助于解决您的问题。

 类似资料: