@specializes and @Named Java



创建新视图时,应使用@Named注释。但是,如果视图应该是已经存在的类的扩展,那么应该如何实现。要覆盖类中的方法,我使用以下方法:

@ViewScoped
@Specializes
public class classB extends class A{
@Override
public String save(){
}
}

这允许我保留已经生成的实体。

但是视图需要有以下注释:

@Named
@ViewScoped
@URLMapping()
public class classB extends class A{
//content

}

这应该如何在一个班级中实现?考虑到这两个注释不能共存?

这个问题的答案取决于实体最初是如何创建的。如果要扩展管理实体的类,则必须创建一个单独的视图。这意味着一个命名类是管理实体的类的扩展。

在这之后,您必须创建一个关联JSF页面到创建的新命名视图。

若要传递信息,必须创建一个具有专用注释的适当扩展类,才能访问实体。

如果您试图在新视图类中操作实体,则会导致合并错误,因为程序已经认为该实体存在于数据库中。

最新更新