【问题标题】:How can I share business logic between server and client if I use RequestFactory?如果我使用 RequestFactory,如何在服务器和客户端之间共享业务逻辑?
【发布时间】:2013-08-07 11:48:22
【问题描述】:

假设我有一个 Employee bean,它有一个“dateOfBirth”属性:

public class Employee {
    ...
    private Date dateOfBirth;
    ... 
    public Date getDateOfBirth() {...}
    public void setDateOfBirth(Date date) {...}
    ...
}

为了使用 RequestFactory,我创建了 EmployeeProxy:

@ProxyFor (value = Employee.class)
public inteface EmployeeProxy extends EntityProxy {
    ... 
    Date getDateOfBirth();
    void setDateOfBirth(Date date);
    ...
}

现在假设我有一个静态方法,它给一个员工它返回他的年龄:

public class Util {
    public static int getAge(Employee e) {
        return (new Date()).getYear()-e.getDateOfBirth().getYear();
    }
}

如果我没有使用 RequestFactory 并且客户端中也有 Employee 类,我可以在服务器和客户端之间共享“Util”并为客户端上的 Employee 实例调用 getAge()。 由于我使用的是 RequestFactory,我想我必须像这样为客户端创建一个新版本的 Util:

public class Util {
    public static int getAge(EmployeeProxy e) {
        return (new Date()).getYear()-e.getDateOfBirth().getYear();
    }
}

为客户端和服务器制作 Util 版本的最佳解决方案是什么?

这是微不足道的,但我实际上有一些复杂的计算,我经常可以在客户端上做这些计算并节省往返时间。我喜欢 RequestFactory 的主要原因是它只传输更新时的修改值。 我的域类是简单的 POJO,我可以毫无问题地与客户共享。

【问题讨论】:

    标签: gwt requestfactory


    【解决方案1】:

    作为最佳实践 - 您的 Employee 类应该实现 EmployeeProxy 接口。

    这也不能解决您在服务器端使用 Util 类的问题吗?

    【讨论】:

    • 感谢您的回答。这是一个简单的解决方案,但我必须在我的服务器上使用代理类,它似乎不太干净。此外,我的域类是自动生成的,每次生成后我都必须添加实现语句。我正在考虑根本不使用 RequestFactory。
    猜你喜欢
    • 2016-03-18
    • 2016-09-26
    • 1970-01-01
    • 2012-07-22
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多