0

RequestFactoryに頭を悩ませようとしていますが、いくつか問題があります。不変タイプ(joda-time LocalDate)のvalueproxyであるプロパティを持つentityproxyがあり、サーバーへの呼び出しでこのentityproxyを使用する際に問題が発生しています。

entityproxyにプロパティのゲッターのみを含め、valueproxyにプリミティブプロパティのゲッターのみを含めることで、プロパティを読み取り専用にしました。

ただし、私が知る限り、サービスメソッドの呼び出しでentityproxyを引数として使用すると、参照されているvalueproxyは自動的に編集済みとしてマークされ、そのすべてのプロパティがデルタに含まれますか?

これにより、ReflectiveServiceLayerはLocalDateに欠落しているセッターに関する例外をスローします。

私はこれを回避するために「setProperty」をオーバーライドするServiceLayerDecoratorを実装するというアイデアをいじくり回してきましたが、それが良い解決策であるかどうかはわかりません。これを修正する「適切な」方法はありますか?理想的には、AbstractRequestContextに、サーバーへの呼び出しに不変のプロパティを含めないようにします。

GWT2.3を使用しています

編集:私はこのような回避策を作成しましたが、これが正しいアプローチであるかどうかはまだわかりません:

public class ImmutablePropertyFixServiceLayer extends ServiceLayerDecorator {
    @Override
    public void setProperty(Object domainObject, String property, Class<?> expectedType, Object value) {
        Method setter = getTop().getSetter(domainObject.getClass(), property);
        if (setter != null) {
            super.setProperty(domainObject, property, expectedType, value);
        } else {
            //System.out.println(domainObject.getClass().getName() + "." + property + " doesn't have a setter");
        }
    }
}
4

1 に答える 1

1

EntityProxy オブジェクトには、サーバー上で簡単に取得できる方法があるため、オブジェクトをサーバーに送り返すときは、ID だけが必要です。一方、ValueProxy オブジェクトは、すべてのサブ値の組み合わせとしてのみ送信できます。不変の値をサーバーに送り返すとき、サーバー コードはプロキシをサーバー側の値に戻す方法を知りません。

クライアントから送信された日付と同じ日付をサーバーで正しく取得できない可能性があるというあなたのソリューションに懸念があります。

于 2011-11-08T16:08:51.213 に答える