假设我们有课程:
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的字段即使它们没有呈现。