我知道这个问题已经被问过很多次了,我已经检查了先前的问题,但都不满足我的需求。我是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();
}
}
我的想法是调用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
时却自动为我完成。
如何解决该功能?
答案 0 :(得分:0)
解决方案令人心碎,所以事实证明我使用了错误的标签
<%! 我的代码在这里 %> `
代替
<%
My code here
%>
现在我的代码起作用了。