API возвращает отзыв или данные по идентификатору студента, он даже работает для множественных отзывов, API отлично работает в swagger, но пока я подключал его к внешнему интерфейсу, он принимает нулевое значение и ничего не возвращает.
Я прошел следующие онлайн-уроки
public List<StudentFeedback> getFeedbacks(Integer studentid) {
Query query = entityManager.createNativeQuery("SELECT * FROM student_feedback WHERE studentid = ?",StudentFeedback.class);
query.setParameter(1,studentid);
return query.getResultList();
}
. Это мой запрос для получения подробной информации. Api:
@GetMapping("/student-feedbacks/{studentid}")
public List<StudentFeedback> getFeedbacks(Integer studentid) {
return studentFeedbackRepository.getFeedbacks(studentid);
}
Метод служб:
find(studentid: number): Observable<EntityResponseType> {
return this.http.get<IStudentFeedback>(`${this.resourceUrl}/${studentid}`, { observe: 'response' });
}
файл маршрута:
Injectable({ providedIn: 'root' })
export class StudentFeedbackResolve implements Resolve<IStudentFeedback> {
constructor(private service: StudentFeedbackService) {}
resolve(route: ActivatedRouteSnapshot): Observable<IStudentFeedback> {
const studentid = route.params['studentid'];
if (studentid) {
return this.service.find(studentid).pipe(map((studentFeedback: HttpResponse<StudentFeedback>) => studentFeedback.body));
}
return of(new StudentFeedback());
}
}
export const studentFeedbackRoute: Routes = [
{
path: '',
component: StudentFeedbackComponent,
data: {
authorities: ['ROLE_ADMIN'],
pageTitle: 'StudentFeedbacks'
},
canActivate: [UserRouteAccessService],
outlet: 'ListingView'
},
{
path: ':studentid/view',
component: StudentFeedbackDetailComponent,
resolve: {
studentFeedback: StudentFeedbackResolve
},
data: {
authorities: ['ROLE_ADMIN'],
pageTitle: 'StudentFeedbacks'
},
canActivate: [UserRouteAccessService]
},
файл component.ts
loadAll() {
this.studentFeedbackService.query().subscribe((res: HttpResponse<IStudentFeedback[]>) => {
this.studentFeedbacks = res.body;
});
}
ngOnInit() {
this.loadAll();
this.registerChangeInStudentFeedbacks();
}
ngOnDestroy() {
this.eventManager.destroy(this.eventSubscriber);
}
trackId(index: number, item: IStudentFeedback) {
return item.studentid;
}
registerChangeInStudentFeedbacks() {
this.eventSubscriber = this.eventManager.subscribe('studentFeedbackListModification', () => this.loadAll());
}
}
html код кнопки:
<td class="text-right">
<div class="btn-group">
<button type="submit"
(click)="find(studentid)"
[routerLink]="['/student-feedback', studentFeedback.studentid, 'view' ]"
class="btn btn-info btn-sm">
<fa-icon [icon]="'eye'"></fa-icon>
<span class="d-none d-md-inline">Feedback</span>
</button>
при нажатии, я должен получить все данные от studentid
это сообщение, которое я получаю в консоли, метод принимает нулевое значение, а не идентификатор студента
numberOfFeedback=1, studentid=8}, StudentFeedback{id=11, feedback='sky blue Georgia', name='Facilitator', numberOfFeedback=1, studentid=9}, StudentFeedback{id=12, feedback='e-enable Communications capacitor', name='Awesome', numberOfFeedback=1, studentid=10}, StudentFeedback{id=13, feedback='e-enable Communications capacitor', name='Awesome', numberOfFeedback=1, studentid=11}]
2020-01-20 12:28:04.012 DEBUG 2396 --- [ XNIO-1 task-15] c.m.myapp.aop.logging.LoggingAspect : Enter: com.mycompany.myapp.web.rest.StudentFeedbackResource.getFeedbacks() with argument[s] = [null]
2020-01-20 12:28:04.017 DEBUG 2396 --- [ XNIO-1 task-15] c.m.myapp.aop.logging.LoggingAspect : Enter: com.mycompany.myapp.repository.StudentFeedbackRepositoryImpl.getFeedbacks() with argument[s] = [null]
Hibernate: SELECT * FROM student_feedback WHERE studentid = ?
2020-01-20 12:28:05.151 DEBUG 2396 --- [ XNIO-1 task-15] c.m.myapp.aop.logging.LoggingAspect : Exit: com.mycompany.myapp.repository.StudentFeedbackRepositoryImpl.getFeedbacks() with result = []
2020-01-20 12:28:05.153 DEBUG 2396 --- [ XNIO-1 task-15] c.m.myapp.aop.logging.LoggingAspect : Exit: com.mycompany.myapp.web.rest.StudentFeedbackResource.getFeedbacks() with result = []