动态创建超级和子类的表单

时间:2017-04-21 13:55:21

标签: java jsf

假设我们有课程:

public class BasicCustomer {
    private String name;
    private String email;
    ----getters and setters omited----
}

public class CustomerWithDog extends BasicCustomer{
    private String dogName;
    private String dogRace;
    ----getters and setters omited----
}

public class CustomerWithCat extends BasicCustomer{
    private String catName;
    private String catRace;
    ----getters and setters omited----
}

只有当客户登录时,我才能推断出他是哪种类型。

问题: 有没有办法动态创建具有特定类型客户的适当字段的表单( CustomerWithCat 应该看到具有 name email 的输入的表单, catName catRace )?

如果我使用java.lang.reflect.Field类从类中获取字段,那么我应该使用Field.setAccessible(true)(因为字段是私有的),另一方面违反封装(并且绕过getter和setter,不是我想要的。)

我看看:

How to create dynamic JSF form fields

解决方案1,但我不明白如何填充 value 属性,因为如果用户是 BasicCustomer ,那么它无法引用来自 CustomerWithCat的字段即使它们没有呈现。

0 个答案:

没有答案