Отправка данных JSON из углового интерфейса 7 в Spring Controller - PullRequest
0 голосов
/ 20 октября 2019

Я хочу отправить данные JSON из Angular 7 UI в Spring MVC Controller и сохранить данные в mysql db.

Я могу отправить данные из Spring Controller в Angular, но я не могунайти способ сделать обратное. Может ли кто-нибудь помочь мне с некоторыми ссылками или кодом для него.

в .ts файл

this.http.post("someurl/addData",event.newData).subscribe(response => { console.log(response);}) 

и в контроллере Spring: -

@RequestMapping(value="/addData",method=RequestMethod.GET) public void addDataintoDb(PojoClass pojo){ System.out.println(pojo.start); } 

Ответы [ 4 ]

0 голосов
/ 23 октября 2019

Исправьте приведенный ниже метод

@RequestMapping(value="/addData",method=RequestMethod.GET) public void 
addDataintoDb(PojoClass pojo){ System.out.println(pojo.start); }

Вместо GET измените его на POST.

и добавьте @ RequestBody => addDataintoDb (@RequestBody PojoClass pojo)

@RequestMapping(value="/addData",method=RequestMethod.POST) public void 
addDataintoDb(@RequestBody PojoClass pojo){ System.out.println(pojo.start); }
It will work.

По умолчанию угловое тело сообщения как json, используйте ниже, если у вас есть несоответствие в типе тела запроса: -

 let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
 this.http.post("someurl/addData",event.newData,{ headers: headers 
 }).subscribe(response => { console.log(response);})
0 голосов
/ 20 октября 2019

Предположим, что ваш контроллер (api):

// http получает вызов с длинным идентификатором

@GetMapping("/find-by-id")                            
public Response getEmployeeById(@RequestParam("id") Long id) {
    return employeeServiced.getEmployeeById(id);
}

// http отправляет вызов с Object,

Свойство Java Object и свойство JSON Object должны быть одинаковыми для автоматической привязки.

@PostMapping("/save")
public Response saveEmployee(@RequestBody(required = false) EmployeeEntity reqObj) {
    return employeeServiced.saveEmployee(reqObj);
}

Java Orm Entity:

import org.springframework.stereotype.Component;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
public class EmployeeEntity  {

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   private long id;

   private String empName;

   private String gender; 

}

Служба:

@Service
@Transactional
public class EmployeeService {


  @Autowired
  UserDao userDao;


  public void saveEmployee(EmployeeEntity user){
    userDao.add(user);
 }


 public User findByIdPost(long id){
    return userDao.getById(id);
 }

 public User getEmployeeById(long id){
    return userDao.getEmployeeById(id);
 }

}

В API углового вызова (отправка данных Json на сторону сервера):

В угловом компоненте (Для получения запроса на упреждающую отправку данных) :

      getEmployeeById(id: number):void{
       this.employeeService.getEmployeeById(id).subscribe(
        res => {
        if(res.success){
          console.log(res);
        },
        err => {
          console.log(" error: ", err);
        })
      }

В службе Angular:

      getEmployeeById(id: any) {
        return this.http.get<any>('http://localhost:8090/employee/find-by-id'`, {
          params: new HttpParams().set('id', id)
        })
      }

В программе Angular, вызвать API (отправить данные объекта Json на серверсторона):

в угловом компоненте (для отправки данных объекта запроса) :

      OnSaveEmployee(): void {
        let empObj = {          // For Object binding Json Object property and java Entity property must be same name.
        "empName":"IMRAN"
        "gender":"Male"
        }

        this.employeeService.saveEmployee(empObj).subscribe(
          res => {
          if(res.success){
            console.log(res)
           }else{
             console.log("getPatientDemographyInfo error:",res);
           }
          },
          err => {
            console.log("Priority list error: ", err);
          }
        )
      }

в службе углов:

     saveEmployee(empObj:any): Observable<any> {
        return this.http.post<any>("http://localhost:8090/employee/save", 
        empObj).pipe(
          map((data: any) => data
        ));
      }

Завершить проект здесь

0 голосов
/ 20 октября 2019

Похоже, проблема в том, что вы отправляете запрос POST со стороны Angular, но аннотировали метод вашего контроллера Spring как принимающий GET. Итак, я предполагаю, что вы получите 404 / Not Found, поскольку в приложении Spring нет метода для обработки GET.

Чтобы это исправить, измените

@RequestMapping(value="/addData",method=RequestMethod.GET) public void addDataintoDb(PojoClass pojo){ System.out.println(pojo.start); } до

@RequestMapping(value="/addData",method=RequestMethod.POST) public void addDataintoDb(PojoClass pojo){ System.out.println(pojo.start); }

0 голосов
/ 20 октября 2019

Это для отправки данных на контроллер MVC пружины

https://www.programmergate.com/pass-data-from-jsp-to-spring-controller/

Это для отправки данных с использованием угловых

Как отправить данные формы всервер api с угловым 2?

https://angular.io/guide/http

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...