2013-07-29 74 views
1

我正在使用primefaces来处理Jsf2项目。我用过这样的东西: Bean类:Java中Bean类的继承

学生它的主要Bean类与id和名称。我创建了两个bean类。技术学生和非技术学生都在扩展学生豆类。我的问题是我在做对吗?设计是否正确?我想保持标识和名称常见的是各技术学生和非技术的学生可重复使用的页面

class student{ 
     id, name 
     getter and setter 
} 

class Technicalstudent extends student{ 
     technicaldetails, 
     get and set 
} 

class NonTechnicalstudent extends student{ 
     nontechnicaldetails 
     get and set 
} 
+0

是的,你做对了。但要确保你的学生getter setter应该公开。 –

+0

@AshishAggarwal:在创建前端时出现问题。在addstudent中,我只是说student.name,并且我保留了一个下拉框来选择技术性或非技术性的,基于这个值,我在后端创建技术或非技术对象并存储学生姓名,ID和详细信息在数据库中的详细信息,而从数据库中再次检索时,我必须分别在页面上显示数据,所以我必须做技术和非技术的变化,并在页面上显示它。 – shreekanth

回答

0

是你的设计是从继承的角度正确。子类/子类需要继承父类的共同属性,并且可以拥有自己的属性。

+0

如果'Student'类是'ManagedBean',这仍然适用吗? –

+0

我一直把studentBean当作backbean。 Student controller as managedbean .. – shreekanth

+0

@PrasadKharkar:我保留studentBean作为支持bean,我使用技术和非技术学生支持bean。学生控制器作为managedbean ..当我们在bean类上进行继承时,必须在前端进行修改。所以我得到了这个困惑,是否正确的方式来做到这一点 – shreekanth

0

我发现代码基于你想要实现的没有错。你在这里做的是is-a relationship。意思是技术学生和非技术学生也是学生。因此它会继承学生的每个字段。希望有所帮助。

0

您的设计是正确的,但就用户而言,您必须将您的enity与后端对象进行映射。使用Student对象映射对象并取aboolean是学生对象,如Boolean isTechnicalStudent,并基于选项truefalse

在UI端切换你的技术和非技术学生的详细信息,现在由于这个布尔值,你总是知道它是技术还是非技术,所以你可以很容易地键入演员。