首页 > 解决方案 > 如何在 JSP 中调用 Class 方法?

问题描述

我知道这个问题已经被问过很多次了,我检查了以前的问题,没有一个适合我的需要。我是新来的,JSP但我是一名旧时的 Java 开发人员。我googled关于从 a 和 multiple 进行网络调用的不同方法来了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()返回 a 的方法,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甚至自动完成时。如何解决该功能?

标签: javajspretrofit2rx-java2

解决方案


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

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

而不是

<% My code here %>

现在我的代码可以工作了。


推荐阅读