私のアプリケーションでは、Flex と Java 間の通信に BlazeDS を使用しています。Java での BlazeDS 統合に Spring を使用しています。
TransactionStatus という列挙型があります。フレックス側では、対応するプロパティが整数として設定されます。この変換を処理するためにカスタム コンバーターを使用しようとしています。ここに私のコンバーターがあります:
public class TransactionStatusIntConverter implements Converter<TransactionStatus, Integer> {
@Override
public Integer convert(TransactionStatus src) {
if(src == null){
return 0;
} else {
return src.getValue();
}
}
}
と
public class IntTransactionStatusConverter implements Converter<Integer, TransactionStatus> {
@Override
public TransactionStatus convert(Integer src) {
return TransactionStatus.fromInt(src);
}
}
Flex クライアントから Java にデータを送信すると、変換が成功し、期待どおりに TransactionStatus インスタンスが取得されます。ただし、Java から Flex にデータを送信する場合、変換関数は実行されません。両方のコンバーターは確実に私の ConfigProcessor クラスに登録されています
@Override
protected void configureConverters(ConverterRegistry registry) {
registry.addConverter(new IntTransactionStatusConverter());
registry.addConverter(new TransactionStatusIntConverter());
}
何が起きてる?