Erro na persistência com thymeleaf

12 respostas
spring-boot
Cristofe

Olá pessoal,

Estou com dificuldade em realizar uma persistência. Minha classe resource:

package com.doutores2019.resource;

<a class="mention" href="/u/controller">@Controller</a>

@RequestMapping("/pessoas")

public class PessoaResources extends Pessoa{
private PessoaRepository pessoaRepository;


// Mapeamento das Páginas HTML
@RequestMapping("/nova")
public String novo() {
	return "cadPessoa";
}

@RequestMapping("/index")
public String index() {
	return "index";
}


@RequestMapping(method = RequestMethod.GET)
public List<Pessoa> listar() { 
	return pessoaRepository.findAll();
}

@RequestMapping (method = RequestMethod.POST)
public String salvar (@RequestBody Pessoa pessoa) {
	pessoaRepository.save(pessoa);
	return "cadPessoa";
}

/*
 * @RequestMapping(value = "/{id}", method = RequestMethod.GET) public Pessoa
 * buscar(@PathVariable("id") Long id) { return pessoaRepository.findOne(id);
 * 
 * }
 */
@RequestMapping (value = "/{id}/{nome}/{cpf}", method = RequestMethod.DELETE)
public void deletar (@PathVariable("id") Long id, @PathVariable("nome") String nome, @PathVariable("cpf") int cpf) {
	pessoaRepository.deleteById(id);
	
}

}

Porém um erro ocorre ao acionar: `

form class= “form-horizontal” method= “post” action = “/pessoas” >

Erro:

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Mon Nov 11 21:54:33 AMT 2019

There was an unexpected error (type=Unsupported Media Type, status=415).

Content type application/x-www-form-urlencoded;charset=UTF-8 not supported

org.springframework.web.HttpMediaTypeNotSupportedException: Content type application/x-www-form-urlencoded;charset=UTF-8 not supported

at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:224)

at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:157)

at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:130)

at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:126)

at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:166)

at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)

at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)

at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)

at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)

at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

O que deve está ocorrendo ?

12 Respostas

Jonathan_Medeiros

O erro está descrito aqui, o seu método salvar não suporta o tipo de requisição que você está enviando.

Cristofe

Neste caso o ==>> Content type ‘application/x-www-form-urlencoded;charset=UTF-8

Como fazer para resolver esse problema ? Suado a parada.

Jonathan_Medeiros

Está fazendo uma aplicação com thymeleaf, ou uma API?

Cristofe

Estou fazendo com o thymeleaf

Cristofe

Será que podes me ajudar:

Content type ‘application/x-www-form-urlencoded;charset=UTF-8

Com o thymeleaf

Jonathan_Medeiros

Como está definido o seu formulário?

Cristofe

form class= “form-horizontal” method= “POST” action= “pessoa” >

Jonathan_Medeiros

O formulário todo…

Cristofe
<!DOCTYPE html>
Cadastro de Pessoas
<form class="form-horizontal" method="post" action = "/pessoas">
	<div class="panel panel-default">
		<div class="panel-heading">
			<h1 class="panel-title">Cadastrar Pessoa</h1>
		</div>
		
		<div class="panel-body">
			<div class="form-group">
				<label for="descricao" class="col-sm-2 control-label">Nome</label>
				<div class="col-sm-4"> 
					<input type="text" class="form-control" id="nome" name="nome"/>
				</div>
			</div>
			<div class="form-group">
				<label for="cpf" class="col-sm-2 control-label">CPF</label>
				<div class="col-sm-2">  
					<input type="number" class="form-control"	id="cpf" name="cpf" />
				</div>
				<label for="identidade" class="col-sm-2 control-label">Identidade</label>
				<div class="col-sm-2">  
					<input type="number" class="form-control"	id="identidade" name="identidade" />
				</div>
			</div>
			
			<div class="form-group">
				<div class="col-sm-offset-2 col-sm-10">
					<button type="submit" class="btn btn-primary">Salvar</button>
				</div>
			</div>
		</div>
	</div>
</form>
Jonathan_Medeiros

Seu formulário não tem nenhuma definição de cabeçalho?

Cristofe
<head>
<title>Cadastro de Pessoa</title>
<meta charset="UTF-8"/>
<title>Doutores 2019</title>
<link rel="stylesheet" type="text/css" href="/css/bootstrap.min.css"/>
<link rel="stylesheet" type="text/css" href="/css/style.css"/>
Jonathan_Medeiros

Tenta definir as tags meta desta forma:

<meta charset="UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Criado 12 de novembro de 2019
Ultima resposta 16 de nov. de 2019
Respostas 12
Participantes 2