【发布时间】:2014-03-02 06:50:12
【问题描述】:
我正在尝试为我在映射一个简单的 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 映射,因此每次用户添加一个新对象时,它都会自动在 ArrayList 中添加 Example1 的另一个对象,您将拥有一个 List
,其中包含 example1 的所有对象。跨度>
标签: java jakarta-ee javabeans java-6