Como preencher um input com LocalDate via javascript?

Ola,

campoEan.on('enter', function(evento, codigoEan) {		
	$.ajax({
		url : '/pesquisa/produto',
		method : 'GET',
		contentType : 'application/json',
		data : {
			ean : campoEan.val()
		},
		success : onPesquisaConcluida,
		error : onErroPesquisa
	});
});
    function onPesquisaConcluida(resultado) {
	$('.js-mensagem-cadastro').addClass('hidden');
	$('#codigo').val(resultado.id);
	$('#idProduto').val(resultado.id);
	$('#descricao').val(resultado.descricao);
	$('#precoCompra').val(formatarMoeda(resultado.precoCompra));
	$('#precoCusto').val(formatarMoeda(resultado.precoCusto));
	$('#margemLucro').val(formatarMoeda(resultado.margemLucro));
	$('#precoVenda').val(formatarMoeda(resultado.precoVenda));
	$('#precoPromocao').val(formatarMoeda(resultado.precoPromocao));		
	$('#dataInicial').val(resultado.dataInicial);
	$('#dataFinal').val(resultado.dataFinal);
	$('#precoVenda').focus();
}

A data retorna do banco de dados como um LocalDate. Quando atribuo o valor dessa forma o input fica com [Object]. Se eu setar a data montando a string dataInicia.dayOfMoth + ‘/’ + dataInicial.monthValue + ‘/’ + dataInicial.year, a parece normalmente. Porem quando eu clico no input que ele mostra o calendario (estou usando datepicker), a data some.

tentei usar toLocaleString, tambem nao deu certo. Entao gostaria de saber como eu jogo a data carregada do banco de dados num campo de input?

Obrigado

Tentou toString?

https://www.w3schools.com/jsref/jsref_tostring_date.asp

$('#dataInicial').val(resultado.dataInicial.toString());
$('#dataFinal').val(resultado.dataFinal.toString());

tentei

Nesse caso ele precisa vir formatado pelo spring, quem estiver manipulando java no backend precisa usar a classe SimpleDateFormat e te passar as datas no formato dd/MM/yyyy

nesse caso eu devolvo uma String e nao um LocalDate?

Seria o certo, você tem que ter em mente que se usa JSON para comunicação, a linguagem da “outra ponta” pode não saber o que é LocalDate, isso pode ser uma classe específica do Java, e se eu estiver usando PHP por exemplo para pedir esse JSON, não vou saber interpretar…

Além disso, o JSON já possui um padrão de dados justamente para garantir a comunicação entre os sistemas…

String ("", ''), Number (10, 1.99), Boolean (true, false), 
Array ([]), OBJ ({}) e Nulo (null)

O JSON na verdade é todo composto e transmitido como String, cada linguagem seguindo essa regra de tipagem converte para o formato certo (parse), como esses são tipos básicos que qualquer linguagem possui tratamento, LocalDate não entra nessa lista e acaba sendo interpretado como String pegou?

opa, resolvido ja. A solucao era mais facil e estava dentro do proprio datepiker. Achei no manual depois de uma dica em uma comunidade no facebook.

function onPesquisaConcluida(resultado) {
	$('.js-mensagem-cadastro').addClass('hidden');
	$('#codigo').val(resultado.id);
	$('#idProduto').val(resultado.id);
	$('#descricao').val(resultado.descricao);
	$('#precoCompra').val(Tatui.formatarMoeda(resultado.precoCompra));
	$('#precoCusto').val(Tatui.formatarMoeda(resultado.precoCusto));
	$('#margemLucro').val(Tatui.formatarMoeda(resultado.margemLucro));
	$('#precoVenda').val(Tatui.formatarMoeda(resultado.precoVenda));
	$('#precoPromocao').val(Tatui.formatarMoeda(resultado.precoPromocao));
	$('#dataInicial').datepicker("update", resultado.dataInicialString);
	$('#dataFinal').datepicker('update', resultado.dataFinalString);
	$('#precoVenda').focus();
}

E no objeto DTO que recebe os dados do banco o construtor ficou assim na parte de data:

this.dataInicialString = dataInicial.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
this.dataFinalString = dataFinal.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
2 curtidas