【发布时间】:2019-09-27 02:00:46
【问题描述】:
我知道这个问题已经被问过很多次了,我检查了以前的问题,没有一个适合我的需要。我是 JSP 的新手,但我是一位老牌 Java 开发人员。
我googled 谈到了从JSP file 进行网络调用的不同方式,但是由于JSP 是Java 的后代,我想利用这个优势并做出完全不同的事情,我已经使用Retrofit 进行网络调用rxJava。
我做了一个接口类
public interface APIService {
@GET("getprofiles")
Single<List<UserProfileRole>> getProfileRoles();
}
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();
}
}
我的想法是调用返回Single 的NetworkCallManager.getAllUserProfiles() 方法,所以在我的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 时甚至自动完成。
如何解决该函数?
【问题讨论】:
标签: java jsp retrofit2 rx-java2