0

我正在使用 eclipse 和 GWT 在 java 中编写汽车租赁代理的 Web 应用程序,但是我遇到了一个错误,该服务器方法被一个失败的 RPC 使用,createRentDTO

 private RentDTO createRentDTO(Rent rent) {
    return new RentDTO( createEmployeeDTO(rent.getEmployee()),
                               createClientDTO(rent.getClient()), 
                               createCarDTO(rent.getCar()), 
                               rent.getId() );
        }

我注意到,如果我使用以下内容更改createRentDTO 的返回,它会起作用:

     return new RentDTO(new EmployeeDTO("mike", "smith", (long) 99, "mike87","qwe123"), 
                        new ClientDTO("harry", "jones", "cl24h89"), 
                        new CarDTO("SUBARU", "supercar", (long) 25000,(long) 12), 
                        rent.getId()  
                       );

问题显然是我不能用像“harry”“jones”这样的随机值填充班级,但我必须采用我已经保存的员工、客户和汽车的值(我想使用 getter getEmployeeDTO .getClientDTo .getCarDTo 之类的租金?)。 我该怎么做,为什么我尝试的第一种方法不起作用?

这里有一些与该问题相关的其他代码: Rent.class

   public class Rent implements Serializable {

      Employee employee;
      Client client;
      Car car;
      long id;

      // getter and setter like:
      public Employee getEmployee() {
    return employee;
  }
      // getCar() and getClient are equal to getEmployee [...]

   }

Employee、clientcar都是简单的类(它们被序列化以使它们可以保存在数据库中)彼此非常相似,具有一些属性,如姓名、姓氏、用户名、密码、id 或价格。

我只会写Employee.class

   public class Employee {

String name;
String surname;
@Id
Long id;
String username;
String password;

    // + getter and setter like getName() , getSurname() .....
   }

这是createEmployeeDTO()方法:

(createCarDTO 和 createClientDTO 是相等的……唯一改变的是一些属性)

      private EmployeeDTO createEmployeeDTO(Employee employee) {
          return new EmployeeDTO(employee.getName(),
                                      employee.getSurname(), 
                                      employee.getId(),
                                      employee.getUsername(),
                                      employee.getPassword() );
      }

租用类的目的是让 Web 应用程序的用户能够选择哪个员工客户租了

当 RPC 失败时,它会给出一般错误

“500 在服务器上调用失败;有关详细信息,请参阅服务器日志”

但是码头的服务器日志只说POST方法失败并且在eclipse控制台中没有错误。

感谢您的帮助,请随时询问一切

4

1 回答 1

1

你的 DTO 有零参数的构造函数吗?能见度不重要?如果没有零参数构造函数,您的调用将失败。

您的 DTO 是否在共享包中?如果你想在服务器端和客户端使用你的 DTO,它们必须在一个共享包中。

将日志级别更改为 TRACE 以获取服务器日志中的更多信息。

于 2013-11-01T18:26:14.473 回答