Vc quer testar usando o recurso de teste do postman mesmo? E o que vc quer testar nessa data?
Isso Lucas: basicamente os outros atributos funcionam, mas as datas não sei qual formato!
Boa noite amigo: estou na parte do front-end tentando recuperar os dados de um formulario abaixo:
<div class="container col-md-10">
<div class="card">
<div class="card-header">
<h4>Cadastrar Atividades</h4>
</div>
<div class="card-body">
<form action="">
<div class="form-group">
<label for="">DESCRIÇÃO</label>
<input #descricao type="text" class="form-control" style="background-color: lightblue;">
</div>
<br>
<br>
<div class="form-group">
<label for="selectStatus">STATUS</label>
<select #status class="form-control" id="idStatus" style="background-color: lightblue;">
<option selected>SELECIONE</option>
<option>AGENDADA</option>
<option>EM ANDAMENTO</option>
<option>CONCLUIDA</option>
</select>
</div>
<br>
<br>
<div class="form-group">
<label for="selectPrioridade">PRIORIDADE</label>
<select #prioridade class="form-control" id="idPrioridade" style="background-color: lightblue;">
<option selected>SELECIONE</option>
<option>ALTA</option>
<option>MEDIA</option>
<option>BAIXA</option>
</select>
</div>
<br>
<br>
<div class="form-group">
<label for="selectFuncionario">FUNCIONÁRIO</label>
<select #funcionario.nome class="form-control" id="idFuncionario" style="background-color: lightblue;">
<option selected>SELECIONE</option>
<option>Pompeo Cesar da Silva</option>
<option>Alexandrovina</option>
<option>Catarina</option>
</select>
</div>
<br>
<br>
<!--<label for="dataPrevista">DATA PREVISTA</label>
<div class="form-group">
<input #dataPrevista type="date" id="dataPrevista" name="dataPrevista" ng-model="example.value"
placeholder="yyyy-MM-dd hh:mm" min="2013-01-01" max="2030-12-31" required style="background-color: lightblue;"/>
</div>-->
<div class="botao">
<button (click)="Cadastrar(atividade)" class="btn btn-danger">Cadastrar</button>
</div>
</form>
</div>
</div>
</div>
Porém: a pergunta é como recuperar Atividade nesse componente angular abaixo?
import { HttpResponse } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Atividade } from 'src/app/Modelo/Atividade';
import { ServiceService } from 'src/app/Service/service.service';
import { Funcionario } from 'src/app/Modelo/Funcionario';
@Component({
selector: 'app-adicionar',
templateUrl: './adicionar.component.html',
styleUrls: ['./adicionar.component.css']
})
export class AdicionarComponent implements OnInit {
atividade:Atividade;
constructor(private router:Router, private service:ServiceService) {}
ngOnInit(): void {
}
Cadastrar(atividade:Atividade){
this.service.createAtividade(atividade)
.subscribe(data=>{alert("Se agrego com exito...!!!");
this.router.navigate(["listar"]);
})
}
}
Como recupero uma atividade com esse modelo?
No spring sai: Required request body is missing:
Parece que está faltando vc configurar o form. Veja essa resposta aqui mesmo do GUJ: Erro angular 8 *ngForm
Do nada, tu mudou de dúvida. Conseguiu resolver o problema do OffsetDateTime?
A duvida do OffsetTime não: mas talves se conseguir inserir uma atividade, consigo cadastrar junto a data:
Entendi. O formato que passei, não deu certo de usar no postman não?
Não tentei: eu preciso cadastrar uma atividade: depois cadastrar uma atividade com data: a parte do spring está pronta: eu ja consegui que a interface angular liste as atividades que cadastrei pelo postman: Porém: não consigo implementar o cadastro para cadastrar: quando tento cadastrar uma atividade pela interface que construi, a mensagem do spring é: No spring sai: Required request body is missing: = deduso dai que é um problema de construir uma atividade: não sei como instanciar a atividade no AdicionarModulo e recuperar os atributos no componente.html
Veja o link que mandei referente ao form em angular. Supondo que vc vá usar template-driven forms, vc deve usar ngModel nos inputs do form indicando a propriedade que será preenchida no objeto. E esse objeto que será preenchido será o que vc irá enviar no requisição http que será recebida pelo endpoint criado no spring.
Então, já tentei de tudo, não consigo, não funciona!
O componente está assim:
import { HttpResponse } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup} from '@angular/forms';
import { FormBuilder } from '@angular/forms';
import { ReactiveFormsModule } from '@angular/forms';
import { FormControl } from '@angular/forms';
import { Atividade } from 'src/app/Modelo/Atividade';
import { ServiceService } from 'src/app/Service/service.service';
import { Funcionario } from 'src/app/Modelo/Funcionario';
@Component({
selector: 'app-adicionar',
templateUrl: './adicionar.component.html',
styleUrls: ['./adicionar.component.css']
})
export class AdicionarComponent implements OnInit {
atividade:Atividade;
formulario:FormGroup;
constructor(private formBuilder:FormBuilder, private router:Router, private service:ServiceService) {
}
ngOnInit(): void {
this.formulario = this.formBuilder.group({
descricao: [null],
status: [null],
prioridade: [null],
funcionario: [null]
//dataNascimento: new FormControl(cliente.dataNascimento),
})
}
OnSubmit(){
this.service.createAtividade(this.atividade)
.subscribe(data=>{alert("Se agrego com exito...!!!");
this.router.navigate(["listar"]);
console.log(this.formulario.value);
//this.formAtividade.reset(this.atividade);
})
}
}
Já a o html:
<div class="container col-md-10">
<div class="card">
<div class="card-header">
<h4>Cadastrar Atividades</h4>
</div>
<div class="card-body">
<form class="form-horizontal" [formGroup]="formulario" (ngSubmit)="OnSubmit()">
<div class="form-group">
<label for="" class="control-label" >DESCRIÇÃO</label>
<input type="text" id="descricao" formControl="descricao" class="form-control"
style="background-color: lightblue;">
</div>
<br>
<br>
<div class="form-group">formControlName
<label for="selectStatus">STATUS</label>
<select required class="form-control" id="status" formControl="status" formControlName="status" style="background-color: lightblue;">
<option selected>SELECIONE</option>
<option>AGENDADA</option>
<option>EM ANDAMENTO</option>
<option>CONCLUIDA</option>
</select>
</div>
<br>
<br>
<div class="form-group">
<label for="selectPrioridade">PRIORIDADE</label>
<select id="prioridade" formControl="prioridade" required class="form-control" style="background-color: lightblue;">
<option selected>SELECIONE</option>
<option>ALTA</option>
<option>MEDIA</option>
<option>BAIXA</option>
</select>
</div>
<br>
<br>
<div class="form-group">
<label for="selectFuncionario">FUNCIONÁRIO</label>
<select id="funcionario" formControl="funcionario" required class="form-control" id="idFuncionario" style="background-color: lightblue;">
<option selected>SELECIONE</option>
<option>Pompeo Cesar da Silva</option>
<option>Alexandrovina</option>
<option>Catarina</option>
</select>
</div>
<br>
<br>
<!--<label for="dataPrevista">DATA PREVISTA</label>
<div class="form-group">
<input #dataPrevista type="date" id="dataPrevista" name="dataPrevista" ng-model="example.value"
placeholder="yyyy-MM-dd hh:mm" min="2013-01-01" max="2030-12-31" required style="background-color: lightblue;"/>
</div>-->
<div class="botao">
<button type="submit" class="btn btn-primary">Cadastrar</button>
</div>
</form>
</div>
</div>
</div>
Acho que os formControl nos inputs estão errados:
Mude de:
formControl="prioridade"
para:
[(formControl)]="prioridade"
Vou tentar:::::::: Como faço para testar ver se a atividade recebe os atributos: estou usando o mozila e o metodo: console.log() mas não sei onde visalizar a saída
Com o console.log, tu vê a saída no console do navegador (F12). Outra forma, seria usar o depurador, ou colocando o breakpoint pelo console do navegador ou usando a palavra-chave debugger na linha que vc quer que pare (só funciona com o console do navegador aberto).
Tenteti de tudo: não tem um exemplo completo:
Seguindo aquele exemplo que você postou: a teg que não funciona é essa:
[formGroup]
dessa parte
<form [formGroup]="profileForm" (ngSubmit)="onSubmit()">
Nessa parte:
this.service.createAtividade(this.atividade)
.subscribe(data=>{alert("Se agrego com exito...!!!");
Vc está enviando o this.atividade, porém o seu form está sendo preenchido em formulario. Desse jeito, sempre será enviado um valor vazio. Vc deve preencher a variável atividade com os dados da variável formulario (que estará preenchida com os dados do formulário do html).
Tente assim:
this.atividade = this.formulario.value;
this.service.createAtividade(this.atividade)
.subscribe(data=>{alert("Se agrego com exito...!!!");
Ou vc pode passar o formulário direto na requisição.
Agora consegui compila tudo, falta só isso: adicionar o formulario, para a atividade:
O ultimo atributo de atividade é um funcionario, que tem id, nome e cpf: nesse caso o que vem do selectbox é uma string, isso da um erro: como posso dar um system.outprintln() e visualizae esses dados: estou usando o visual studio code?
onSubmit(){
//let funcionario =new Funcionario();
//this.funcionario.id=1;
let atividade = new Atividade();
this.atividade.funcionario.id=1;
//this.funcionario.id=1;
//this.funcionario.nome = this.formulario.controls.funcionario.value;
//this.atividade.funcionario = this.funcionario;
this.atividade.descricao = this.formulario.controls.descricao.value;
this.atividade.status = this.formulario.controls.status.value;
this.atividade.prioridade = this.formulario.controls.prioridade.value;
this.atividade.funcionario.nome = this.formulario.controls.funcionario.value;
// this.atividade.funcionario.id=1;*/
//this.atividade.funcionario.id = 1;
//this.atividade = this.formulario.value;
//this.atividade.funcionario = this.funcionario;
this.service.createAtividade(this.atividade)
.subscribe(data=>{alert("Se agrego com exito...!!!");
this.router.navigate(["listar"]);
console.warn(this.formulario.value);
//this.formAtividade.reset(this.atividade);
})```