如何在JSP中调用Class方法?

时间:2019-05-09 09:05:39

标签: java jsp retrofit2 rx-java2

我知道这个问题已经被问过很多次了,我已经检查了先前的问题,但都不满足我的需求。我是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时却自动为我完成。 如何解决该功能?

1 个答案:

答案 0 :(得分:0)

解决方案令人心碎,所以事实证明我使用了错误的标签

<%! 我的代码在这里 %> `

代替

<% My code here %>

现在我的代码起作用了。