我想找到一個問題的最佳解決方案,我已經映射了一個簡單的bean結構發送到基於瀏覽器的JavaScript應用程序。目前的需求是管理舊Java後端的大部分顯示控件。目前,我們正在生產的值對象內置了無顯示的邏輯服務作風層,如:複雜的豆映射
public class Example1 {
String value1;
Boolean value2;
Example3 value3;
public String getValue1(){...}
public void setValue1(){...}
....
}
我的目標是能夠到一個通用的結構在這樣所有字段映射,它增加了新的顯示結構這是前端所需要的。我想僅管理原始結構類(Example1類)結構,並簡單地將包裝中的額外值設置爲舊的服務層。
通用結構將採取以下類的形式:
public class Presentable<T> {
T value;
boolean visible = true;
boolean mandatory = false;
List<String> errors = new ArrayList<>();
public T getValue() {...}
public void setValue(T value) {...}
...
}
最終的結果將類似於以下,其中值是在原結構相同的價值:
public class Example2{
Presentable<String> value1;
Presentable<Boolean> value2;
Presentable<Example3> value3;
public Presentable<String> getValue1(){...}
public void setValue1(){...}
...
}
有沒有解決這個問題,而不寫一個Example2風格的類,並在每一個值複製?我願意修改Example1類,因爲它不會影響舊服務的使用者。
謝謝。
更新:我發現的唯一解決方案是使用帶有註釋的代碼生成。雖然我確實寫了一個快速工作的POC,但它很髒。 –
根據客戶需求,您需要擁有Example1的多個對象。那麼爲什麼你需要一個通用的類。您可以使用前端數組列表映射,所以每當用戶添加一個新數組時,它就會自動在ArrayList中添加另一個Example1對象,您將擁有一個列表,其中包含example1的所有對象。 –
Dileep