我在将用户输入的值传递给另一个类时遇到问题。这是一个网络服务,这就是为什么我不知道如何修复它,这是我第一次遇到wevservice。这是获取用户输入的代码。
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来查看它是否打印数据,但它总是显示null,我认为第一类的值不会传递给第二类的变量。
答案 0 :(得分:0)
您需要了解Java运行时环境的基础知识。这将解释您的对象如何相互绑定并可以相互交互。在您的情况下,每次调用第二个类中的方法时,您都在创建PlateNumberCheck的新实例。
PlateNumberCheck plate = new PlateNumberCheck();
对于那个实例,你没有在anss
字段中设置任何值(顺便说一下,这也是不正确的方法,但是后面这个),因为这个实例刚刚创建。