私はrenderJson()を介して私のモデルで動的(一時的)フィールドを公開しようとしていますが、動作しません。ここでは例です:再生!フレームワークrenderJsonは特定のフィールドを公開しません
@Entity
public class Room extends Model {
public String name;
public String code;
@Transient
public List<Booking> bookings;
@Transient
@Expose
public String resource_uri;
public Room(String name, String code) {
this.name = name;
this.code = code;
}
public List<Booking> getBookings() {
return Booking.find("byRoom", this).fetch();
}
public String getResource_uri(){
return "/api/room/" + this.id; //the uri is evaluated dynamically.
}
renderJson(Room.findById(2))への呼び出しは、応答としてこれをレンダリング:
{"name":"Room B","code":"R-B","id":2}
resource_uriフィールドが欠落しています。 @Exposeアノテーションは何もしないようです。フレームワークはアノテーションですべてのコードを生成するので、私はrenderJsonの宣言を見ることができません。まだ
@Transient
@Expose
public String resource_uri;
を持って、自分のフィールド宣言の不一致があるようです
一時的フィールドをシリアル化する方法はありますか? resource_uriは実際にはRESTインターフェースに使用されるメタデータであるため、データベースに永続化したいものではありません。 – sw00
さらに詳しく調べると、私はGsonがプロパティをシリアル化できないことを発見しました。まったく。明らかにフィールドを見つけるために反射を使用するからです。 この機能は、どのような方法で見ることができますか? FlexJSON? – sw00
あなたはGsonでそれを行うことができます、私は私の答えにカスタムアダプターの例を掲載しました。 –