【问题标题】:jsf inheritance abstract classjsf继承抽象类
【发布时间】:2013-11-02 19:25:08
【问题描述】:

在我的项目中,我有一个@Entity 抽象类事件。我很少有 @Entity 类扩展 EVENT,例如 LOGIN、CHANGE_NAME、SEND_TEXT。每个类都有自己的字段 - Login 有来自 EVENT 和 ip 的字段,CHANGE_NAME 有旧用户名的字段,SEND_TEXT 有文本本身的字段,还有你发送文本的人。
现在 - 我有一个与 Event 类有 @OneToMany 关系的 @Entity。

@OneToMany(mappedBy = "wycenioneAuta", cascade = {CascadeType.DETACH, CascadeType.MERGE,
            CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.EAGER)
    @Access(AccessType.FIELD)
    private Set<Event> event= new LinkedHashSet<>();

它存储在此@Entity 上执行的所有事件。现在我描述我的问题:
我想显示事件的历史。我试过了

<ui:repeat value="class.event var="e">
 #{e.id},
 #{e.date}, 
 #{e.user.name}
 </ui:repeat> 


但我只能显示来自具体类的字段,每当我尝试从特定事件中获取数据时,我的应用程序迷恋,'couse f.e. Change_name 没有字段“ip”或 Send_Text 没有字段 oldUsername。有没有办法显示这些数据?当我调试我的应用程序时,事件集看起来不错 - 每个事件的字段都正确填写。

在此先感谢您的帮助。

【问题讨论】:

    标签: jsp jsf inheritance


    【解决方案1】:

    所以我需要做点什么,所以我是这样解决这个问题的: 我在具体类中做了几个@Transient 方法。他们看起来像这样:

    @Transient
    public boolean isChangeName(){
       return (this instanceof ChangeName);
    }
    

    在我的页面中:

    <ui:repeat value="#{entry.eventList}" var="e">
         #{e.isChangeName? e.oldName: ""}
         #{e.isSendText? e.text: ""}
    </ui:repeat>
    

    它就像我想要的那样工作 - 显示带有详细信息的事件列表。 希望有一天它对某人有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多