java - GWT RequerstFactory - 从实体提取代码到服务定位器

标签 java gwt requestfactory

假设我有一个实体“MyUser”,我不想将所有逻辑存储在其中。据我了解文档,我可以将逻辑添加到服务定位器中。我在请求上下文中链接了服务定位器:

@Service(value = MyUser.class, locator = MyServiceLocator.class)
public interface MyUser extends RequestContext {

    InstanceRequest<MyUserProxy, Void> setName(String name);

    Request<Void> changePasswordAndSendMail(String password);

}

并像这样定义定位器:

public class MyServiceLocator implements ServiceLocator {
    @Override
    public Object getInstance(Class<?> clazz) {
        try {
            return clazz.newInstance();
        } catch (InstantiationException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    }

    public static void changePasswordAndSendMail(String password){

        // Do something
    }


}

但是编译器提示:

Could not find domain method similar to myPackage.MyUser changePasswordAndSendMail(java.util.String)

有没有办法从实体中提取逻辑?

最佳答案

如果你希望你的逻辑在 MyUser 之外,然后只需更改 @Service 的值到具有该逻辑的类(我认为问题中的 @ProxyFor 是您的错误)。

如果该类上的方法不是 static那么你需要一个ServiceLocator返回该类的一个实例。服务定位器本身除了定位包含服务方法的服务之外,还执行其他任何操作。

从方法为 static 的状态迁移在MyUser ,只需创建另一个类,移动static那里的方法(当然除了 findMyUser 方法)并更改您的 @Service指向新类。

请注意InstanceRequest方法仍然调用@ProxyFor指向的类的实例方法。代理上的注释被引用为 InstanceRequest 的第一个类型参数。在您的示例中,setName需要是 MyUser 上的实例方法(假设 MyUserProxy@ProxyFor(MyUser.class) 注释)

关于java - GWT RequerstFactory - 从实体提取代码到服务定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680521/

相关文章:

Java:将对象列表转换为另一个 HashMap 中的 HashMap

gwt - GWT 的 Richtext 工具栏

java - GWT:将用户转发到 URL

android - 如何在 Android SyncAdapter 中使用 GWT-RequestFactory(总是出现 ValidationTool-Error)

java - GWT 使用 RequestFactory 命中 HTTP servlet

java - 让 Android 服务监听硬件键按下事件

java - 使用集合进行类型删除

java - 使用 Google App Engine 在服务器端读取 ID3 标签

java - GWT RequestFactory - 如何正确初始化它?

java - 使用 Firebase 的自定义身份验证导致 FirebaseException : An internal error has occurred. [MISSING_IDENTIFIER]