0

私の gwt アプリケーションでは、次のメソッドを実装しました。

@Service("carService")
@Path("/cars")
@Scope("request")
public class CarServiceImpl implements CarService {

     @Autowired
     private CarDAO carDAO;

     @Override
     @GET @Path("{type}/{start}/{end}")
     @Produces({MediaType.APPLICATION_XML})
     public List<Car> findByType(@PathParam("type") CarType type, 
                     @PathParam("start") Date start, 
                     @PathParam("end") Date end) {
     return carDAO.findByType(type, start, end);
     }

ここで、findByType は carDAO のメソッドで、(ピア ツー ピア アーキテクチャの) データベースにレンタル可能な車を要求します。今、私は残りのクライアントを実装する必要があり、私は持っています:

パッケージ it.unibo.ronf.server.rest;

import java.util.Date;
import java.util.List;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.GenericType;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource;

import it.unibo.ronf.shared.entities.Car;
import it.unibo.ronf.shared.entities.CarType;

public class ClientRestCars {

public List<Car> findAvailableCar(CarType type, Date start, Date end) {

    Client client = Client.create();

    WebResource webResource = client
            .resource("http://localhost:8080/RONF/rest/cars");



}

}

そして、パラメータをURLに渡し、結果として車のリストを取得する方法がわかりません。助けられる?

4

1 に答える 1

0

リクエストを送信するためのフレームワークがない場合は、restygwtを確認する必要があります。このようなリクエストを次のように作成できます。

@PUT
@Path("{type}/{start}/{end}")
public void updateOrder(@PathParam("type") CarType carType,
                        @PathParam("start") Date start,
                        @PathParam("end") Date end,
                        MethodCallback<OrderConfirmation> callback);

注 : gwtp を使用している場合は、すぐに使用できるこのタイプのインターフェイスがすぐに提供されることに注意してください。

これは簡単な例ですが、それでもユーザーガイドを読む必要があります

まず、サービス (RestService を拡張するインターフェース) を作成します。

@Path("/test/method")
public interface CarService extends RestService {

  /*
   * With @PathParam, you can specify the name of the attribute in the request.
   * Without PathParam, the name of the attribute takes the name of the argument.
   * The parameter type T of MethodCallBack<T> is the type you expect in the success method of the callback (see above)
   */
  @GET
  public void get(CarType carType,@PathParam("start")Date myStartDateWithASillyName, Date end,MethodCallback<List<Car>> callback);

  /*
   * Another method just to show that you are not limited to one...
   * Here, the request have car parameter and is intended to save a car.
   * As REST norms expect in this case, the resulting car is returned from server (with potentially the id updated after insert in database)
   */
  @POST
  public void post(Car car,MethodCallback<Car> callback);
}

これで、コードのどこからでも、次のようにサービスを呼び出すことができます。

CarService service = GWT.create(CarService.class);
    service.get(carType,dateFrom,dateTo,new MethodCallback<List<Car>>() {

        /*
         *This method is called if a problems occurs (server not reachable, 404,403 etc)
         */
        public void onFailure(Method method, Throwable exception) {
            Window.alert("Error x: " + exception);
        }

        /*
         * In case of success, this method is called and you obtain 
         * the expected List<Car> as the response parameter
         */
        public void onSuccess(Method method, List<Car> response) {
            ...
        }
    });
于 2013-05-27T17:58:47.643 に答える