我目前有一个ViewScoped bean来管理实体的编辑。某些Entity的字段必然会有下拉列表,这些下拉列表会根据其他下拉选项而变化。我决定使用内部类来处理这些下拉,它的效果很好!
我想在其他bean中重用这个内部类,因为还有其他实体也可以使用这个下拉逻辑。我不知道建立这个的最好方法。以下是一些想法:
这是我目前正在使用的模型:
@ViewScoped
public class EntityController {
@EJB
private EntityFacade entityFacade;
@EJB
private PulldownFacade pulldownFacade;
private Entity entity;
private PulldownController pulldownController;
@PostContruct
public void init() {
entity = entityFacade.getEntity(param);
pulldownController = new PulldownController();
}
public class PulldownController {
public PulldownController() {
}
public List<String> getPulldown() {
List<String> list = facade.getPulldown();
modifyThePulldownList(entity, list);
return list;
}
}
}
<h:form>
<h:selectOneMenu value=#{entityController.pulldownController.pulldown}/>
</h:form>
有什么想法吗?
答案 0 :(得分:1)
我认为你应该做的是将getPulldown()逻辑封装在抽象类中实现的方法中。因此,每个后续实现都将使用此实现。这种方法将支持DRY和KISS原则。
在抽象类中通过@EJB访问EJB也没有问题,并且getPulldown()可以直接使用此字段,因为它在您的示例中使用它。