Dozerフレームワークを使用してあるクラスの属性を別のクラスにコピーしています。UTCの日付/時刻をローカル形式に変換します。どのようにJavaを使ってDozer Convertメソッドからフィールドにアクセスするのですか?
public class Source {
private BigDecimal customerid;
private BigDecimal tenantid;
private BigDecimal salutation;
private String timezone;
private Calendar createdate;
}
public class Target {
private BigDecimal customerid;
private String timezone;
private String createdate;
}
これまでのところ、関数が作成され、以下の2行を実行するときに正常に動作している:
List<Source> customrlist = customerdao.findByTenantid(tenantid);
// copy the data into the structure that is to be returned to the client
List<Target> actual = DozerListServices.map(mapper, customrlist,
Target.class);
は今、変更を行うための要望があります。
(ソースクラス内で)使用されている属性の1つがカレンダーです。
目標は、「カレンダー」を「ターゲット」クラスの「文字列」に変換することです。
public class DozerStringToCalTimeConvert extends
DozerConverter<String, Calendar> {
public DozerStringToCalTimeConvert() {
super(String.class, Calendar.class);
}
@Override
public Calendar convertTo(String source, Calendar destination) {
if (!StringUtils.hasLength(source)) {
return null;
}
Calendar dt = null;
return dt;
}
@Override
public String convertFrom(Calendar source, String destination) {
if (source == null) {
return null;
}
return source.toString();
}
}
:だろう。このようになります - これを行うためには、「DozerConverter」を使用することが提案されている
:(YYYY-MM-DD EX)文字列は、特定の形式になります
Formattersを使用してカレンダーをCorret表現(例:YYYY-MM-DD)に変換できますが、日付はUTC形式であるという問題があります。 「ソース」クラスの属性の1つが「タイムゾーン」です。タイムゾーンは 'America/Chicago'、 'US/Eastern'などのようになります。UTC時刻をローカル時刻に変換するには、「タイムゾーン」情報が必要です。上記のサンプルコンバーターコードを使用すると、ソースクラスから "タイムゾーン"にアクセスできるように、どのように変更することができますか?
TIA
回答ありがとうございます。上記のように、私はあなたが "ZonedDateTime"を使うべきであることを知っています。使用されているゾーンはローカルではありませんが、DBからフェッチされます。上の "ソース"クラスには、 "タイムゾーン"と呼ばれるゾーンのフィールドがあります。この値は、 "DozerConverter"を拡張したクラスからアクセスできますか?上記の "DozerStringToCalTimeConvert"コンバータクラスを参照してください。属性はメソッド "convertTo"または "convertFrom"からアクセスできますか?もしそうなら、どうですか? –
「convertTo」または「convertFrom」のどちらのメソッドでも「instanceOf」を使用できますか? TIA –
@CaseyHarrils 'instanceOf'については、私の編集と[Oracle.com Tutorial](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html)を参照してください。私はドーザーのことを何も知らないので、私はあなたを助けることができません。 –