2015-06-21 119 views
-1

將用戶輸入的值傳遞給另一個類時出現問題。這是一個web服務,這就是爲什麼我不知道我將如何修復它,這是我第一次遇到wevservice。這是我獲取用戶輸入的代碼。將值傳遞給java中的另一個類

PlateNumberCheck.java

//PATH FOR CHECKING PLATE NUMBER 

@Path("platecheck") //for the url 

public class PlateNumberCheck { 
    public String anss; 
@GET 
//To get the full url : http://Ipaddress:portnumber/@path/@getPath 
@Path("/check") 
@Produces(MediaType.APPLICATION_JSON) 
//Produces is for the response of JSON. 

public String check(@QueryParam("taxi_plate_no") String taxi_plate_no){ 
    String sagot = ""; 
    anss = taxi_plate_no; 
    if(checkInput(taxi_plate_no)){ 
     display(); 
     sagot = JsonConstruction.JSONResponse("checked", true); 
    } else{ 
     sagot = JsonConstruction.JSONResponse("checked", false, "Not in the database"); 
    } 
    return sagot; 
} 

private boolean checkInput (String taxi_plate_no){ 
    System.out.println("Check Input"); 
    boolean output = false; 
    if(JsonConstruction.isNotNull(taxi_plate_no)){ 
     try{ 
      output = DatabaseConnection.checkPlate(taxi_plate_no); 
     } catch (Exception e){ 
      output = false; 
     } 
    } else{ 
     output = false; 
    } 

    return output; 
} 
public void display(){ 
    System.out.println(anss); 

} 
} 

我覺得這個類的作品。因爲你可以看到我在成功之前首先使用該方法,並且該方法包含在控制檯中輸出輸入的system.out.print。這是我第二堂課,我想把這個輸入傳遞給這個班級。

DisplayTaxiDetails.java

@Path("/displays") 
public class DisplayTaxiDetails { 
    String plates; 
    @GET 
    @Path("taxidetails") 
    @Produces(MediaType.APPLICATION_JSON) 

    public String taxidetails(){ 
     String taxidetails = null; 
     ArrayList<Objects> taxiDetailsList = new ArrayList<Objects>(); 

     try{ 
      PlateNumberCheck plate = new PlateNumberCheck(); 
      plates = plate.anss; 
      taxiDetailsList = new ArrayConnection().getTaxiDetails(plates); 
      System.out.println(plates); 
      Gson gson = new Gson(); 
      taxidetails = gson.toJson(taxiDetailsList); 
     } catch (Exception e){ 
      e.printStackTrace(); 
     } 
     return taxidetails; 

     } 

    } 

正如你可以看到我所說的第一類和訪問ANSS這是存儲已輸入該類的字符串。但是當我訪問它並嘗試傳遞值時,它不起作用。我再次使用system.out.print來查看它是否打印數據,但它總是顯示爲空,我認爲來自第一類的值不會傳遞給此第二類的變量。

回答

0

您需要了解java運行時環境的基礎知識。這將解釋你的對象如何彼此綁定並可以相互交互。在你的情況下,每當你在第二類中的方法被調用時,你正在創建一個PlateNumberCheck的新實例。

PlateNumberCheck plate = new PlateNumberCheck();

對於該實例,您不必在anss現場設置的任何值(順便說一句,這也是不正確的方法,但這是以後),因爲該實例已剛剛創建的。

+0

什麼是將用戶輸入的值傳遞給另一個類的正確方法? – Jerex

+0

閱讀(谷歌它)有關面向對象編程的基本原理。其中之一是封裝。我並不是說這不起作用,但有更好的方法來設計這些要求。但是,正如我所說的,首先嚐試理解爲什麼你總是在這個領域變得空洞,然後設計更好。 –

+0

那我該怎麼辦? – Jerex