通过 url javaplay 设置参数
Setting Parameters through url javaplay
因此,作为我一直在做的一些工作的一部分,我得到了一个包含正在 Swift 应用程序中使用的 Web 服务的文件。我对 WebServices 零熟悉,只通过语法理解知道 Java。我需要使用来自 swift 应用程序的参数调用其中一个 gets。我首先要弄清楚的是如何使用与其关联的 URL 中的参数调用这些 Web 服务之一。例如下面我想调用方法
http://localhost:9000/ListVehicleByPlateNumber
而我想通过URL来指定参数,比如
http://localhost:9000/ListVehicleByPlateNumber?para="123"
但这并没有为参数分配任何值,而且我没有得到结果。如果我硬编码以便函数中使用的字符串为 = "123",它会给出我正在寻找的结果。我只需要知道如何在语法方面通过 url 传递此参数。
路线文件
GET /ListVehicleByPlateNumber controllers.NewVehicle.listVehicleByPlateNumber(para: String ?="")
控制器
public Result listVehicleByPlateNumber(String para){
NewVehicleModel v = new NewVehicleModel();
List<NewVehicleModel> vehiclesC = v.searchByPlateVehicle(para);
ObjectNode wrapper = Json.newObject();
ObjectNode msg = Json.newObject();
if(vehiclesC != null) {
msg.set("VehicleList", toJson(vehiclesC));
wrapper.set("success", msg);
return ok(wrapper);
}else{
msg.put("error", "There are no vehicles with the plate number");
wrapper.set("error", msg);
return badRequest(wrapper);
}
}
在哪里叫
public List<NewVehicleModel> searchByPlateVehicle(String plateNumber){
Transaction t = Ebean.beginTransaction();
List<NewVehicleModel> vehicles = new ArrayList<>();
try {
String sql = "SELECT V.idNewVehicle, V.VehicleType,V.PlateNumber,V.VehicleJurisdiction,V.State,V.Vin,V.Year, " +
"V.Make,V.modelos,V.RegistrationNumber,V.InsuranceCompany,V.PurchaseDate,V.ExpirationDate,V.idPersonaFK " +
"FROM NewVehicle V " +
"WHERE V.PlateNumber = :plateNumber";
RawSql rawSql = RawSqlBuilder.parse(sql)
.columnMapping("V.idNewVehicle", "idNewVehicle")
.columnMapping("V.State", "state")
.columnMapping("V.VehicleType", "vehicleType")
.columnMapping("V.PlateNumber", "plateNumber")
.columnMapping("V.VehicleJurisdiction", "vehicleJurisdiction")
.columnMapping("V.Vin", "vin")
.columnMapping("V.Year", "year")
.columnMapping("V.Make", "make")
.columnMapping("V.modelos", "modelos")
.columnMapping("V.RegistrationNumber", "registrationNumber")
.columnMapping("V.InsuranceCompany", "insuranceCompany")
.columnMapping("V.PurchaseDate", "purchaseDate")
.columnMapping("V.ExpirationDate", "expirationDate")
.columnMapping("V.idPersonaFK", "idPersonaFK")
.create();
Query<NewVehicleModel> query = Ebean.find(NewVehicleModel.class);
query.setRawSql(rawSql)
.setParameter("plateNumber", plateNumber);
vehicles = query.findList();
t.commit();
}
catch (Exception e){
System.out.println(e.getMessage());
}finally {
t.end();
}
return vehicles;
}
找到我自己的答案。我最终从 Integer 转换为 String 这是它在 routes
中的样子
GET /ListVehicleByPlateNumber/:para controllers.NewVehicle.listVehicleByPlateNumber(para: Integer )
控制器
public Result listVehicleByPlateNumber(int para){
String p = String.valueOf(para);
值 123 示例的 URI 格式。
http://localhost:9000/ListVehicleByPlateNumber/123
因此,作为我一直在做的一些工作的一部分,我得到了一个包含正在 Swift 应用程序中使用的 Web 服务的文件。我对 WebServices 零熟悉,只通过语法理解知道 Java。我需要使用来自 swift 应用程序的参数调用其中一个 gets。我首先要弄清楚的是如何使用与其关联的 URL 中的参数调用这些 Web 服务之一。例如下面我想调用方法
http://localhost:9000/ListVehicleByPlateNumber
而我想通过URL来指定参数,比如
http://localhost:9000/ListVehicleByPlateNumber?para="123"
但这并没有为参数分配任何值,而且我没有得到结果。如果我硬编码以便函数中使用的字符串为 = "123",它会给出我正在寻找的结果。我只需要知道如何在语法方面通过 url 传递此参数。
路线文件
GET /ListVehicleByPlateNumber controllers.NewVehicle.listVehicleByPlateNumber(para: String ?="")
控制器
public Result listVehicleByPlateNumber(String para){
NewVehicleModel v = new NewVehicleModel();
List<NewVehicleModel> vehiclesC = v.searchByPlateVehicle(para);
ObjectNode wrapper = Json.newObject();
ObjectNode msg = Json.newObject();
if(vehiclesC != null) {
msg.set("VehicleList", toJson(vehiclesC));
wrapper.set("success", msg);
return ok(wrapper);
}else{
msg.put("error", "There are no vehicles with the plate number");
wrapper.set("error", msg);
return badRequest(wrapper);
}
}
在哪里叫
public List<NewVehicleModel> searchByPlateVehicle(String plateNumber){
Transaction t = Ebean.beginTransaction();
List<NewVehicleModel> vehicles = new ArrayList<>();
try {
String sql = "SELECT V.idNewVehicle, V.VehicleType,V.PlateNumber,V.VehicleJurisdiction,V.State,V.Vin,V.Year, " +
"V.Make,V.modelos,V.RegistrationNumber,V.InsuranceCompany,V.PurchaseDate,V.ExpirationDate,V.idPersonaFK " +
"FROM NewVehicle V " +
"WHERE V.PlateNumber = :plateNumber";
RawSql rawSql = RawSqlBuilder.parse(sql)
.columnMapping("V.idNewVehicle", "idNewVehicle")
.columnMapping("V.State", "state")
.columnMapping("V.VehicleType", "vehicleType")
.columnMapping("V.PlateNumber", "plateNumber")
.columnMapping("V.VehicleJurisdiction", "vehicleJurisdiction")
.columnMapping("V.Vin", "vin")
.columnMapping("V.Year", "year")
.columnMapping("V.Make", "make")
.columnMapping("V.modelos", "modelos")
.columnMapping("V.RegistrationNumber", "registrationNumber")
.columnMapping("V.InsuranceCompany", "insuranceCompany")
.columnMapping("V.PurchaseDate", "purchaseDate")
.columnMapping("V.ExpirationDate", "expirationDate")
.columnMapping("V.idPersonaFK", "idPersonaFK")
.create();
Query<NewVehicleModel> query = Ebean.find(NewVehicleModel.class);
query.setRawSql(rawSql)
.setParameter("plateNumber", plateNumber);
vehicles = query.findList();
t.commit();
}
catch (Exception e){
System.out.println(e.getMessage());
}finally {
t.end();
}
return vehicles;
}
找到我自己的答案。我最终从 Integer 转换为 String 这是它在 routes
中的样子GET /ListVehicleByPlateNumber/:para controllers.NewVehicle.listVehicleByPlateNumber(para: Integer )
控制器
public Result listVehicleByPlateNumber(int para){
String p = String.valueOf(para);
值 123 示例的 URI 格式。
http://localhost:9000/ListVehicleByPlateNumber/123