Я знаю, что этот вопрос задавался много раз, я проверял предыдущие вопросы, и ни один из них не удовлетворял моим потребностям. Я новичок в JSP
, но давний разработчик Java.
Я googled
о различных способах совершать сетевые вызовы с JSP file
и множественные пришли, но, поскольку JSP является потомком Java
Я хотел воспользоваться этим преимуществом и сделать что-то совершенно другое, я использовал Retrofit
для сетевых вызовов с rxJava
.
Я сделал интерфейс класса
public interface APIService {
@GET("getprofiles")
Single<List<UserProfileRole>> getProfileRoles();
}
A Retrofit
класс инициализатора
public class RetrofitService {
public static Retrofit getRetrofit() {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
.addInterceptor(interceptor)
.build();
return new Retrofit.Builder()
.baseUrl(Constants.API)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build();
}
}
И наконец NetworkCallManager
класс
public class NetworkCallManager {
public static Single<List<UserProfileRole>> getAllUserProfiles(){
List<UserProfileRole> mUserProfileRoles = new ArrayList<>();
APIService service = RetrofitService.getRetrofit().create(APIService.class);
return service.getProfileRoles();
}
}
Моя идея - вызвать метод NetworkCallManager.getAllUserProfiles()
, который возвращает Single
, поэтому в моем JSP
я делаю что-то вроде
<%@ page import="manager.NetworkCallManager" %>
<%@ page import="java.util.List" %>
<%@ page import="models.UserProfileRole" %>
<%@ page import="io.reactivex.SingleObserver" %>
<%@ page import="io.reactivex.disposables.Disposable" %><%--
Document : newuserprofiletype
Created on : May 6, 2019, 4:12:01 PM
Author : aubry
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%!
NetworkCallManager.getAllUserProfiles()
.subscribe(new SingleObserver<List<UserProfileRole>>() {
@Override
public void onSubscribe(Disposable disposable) {
}
@Override
public void onSuccess(List<UserProfileRole> userProfileRoles) {
//Set result to page
}
@Override
public void onError(Throwable throwable) {
}
});
%>
Моя единственная проблема - когда я звоню NetworkCallManager.getAllUserProfiles()
intelliJ
дает мне Cannot resolve symbol getAllUserProfiles
, но при наборе ManagerCallManager.
intelliJ
даже автозаполнение для меня.
Как мне разрешить функцию?