用于自定义UI布局的技术

时间:2011-07-22 21:27:38

标签: java user-interface wicket

下面描述的问题涉及库存跟踪Java程序。存在多个类别的库存项目,并且无法预先确定要跟踪的目标类别的哪些属性。以两课为例:

InventoryClassOne {
  String name;
  Double price
}
InventoryClassTwo {
  StockStatus status;
  Long Quantity
}.

存储数据没问题,我可以定义一个

class InventoryProperty<T> {
  T value;
} 

class InventoryClass {
  Map<String, InventoryProperty<?>> inventoryPropertyMap;
}

将使用Wicket框架开发UI。我想为应用程序的管理员提供一种方法,即在每个InventoryClass的基础上添加新的InventoryClasses并定义数据的布局方式(表格,列表等等)。有没有人曾经解决过这类问题?有哪些设计模式可用于实现此目的。我甚至不知道要在Google中输入什么词来获得如何解决这个问题的想法。

1 个答案:

答案 0 :(得分:1)

尽管我喜欢Wicket,但我认为这不是这种元网站的最佳选择。

但如果我绝对不得不在Wicket中这样做,那就是我要做的事情:

  1. 为每个基本UI小部件创建Fragment
  2. 在管理页面上,您可以创建从库存类的每个字段到预制片段的映射。 (您必须使用反射来查询可用的字段。)
  3. 当您构建UI页面时,您创建了一个转发器(例如ListView,但即使是简单的转发器也会这样做),对于Field-&gt; Fragment映射中的每个条目,都会添加转发器指着田野的模特。
  4. 您可能需要稍微调整一下,特别是对于表格,但这是基本的想法。

    然而,我必须重复这一点,你几乎失去了Wicket的大多数优势,更糟糕的是,你必须付出额外的努力来绕过(或反对)Wicket。它似乎不值得。