gpt4 book ai didi

java - 显示 JSF 表中对象的数组列表

转载 作者:行者123 更新时间:2023-11-30 04:27:20 25 4
gpt4 key购买 nike

我想将对象的 ArrayList 显示到 JSF 表中:

我创建了这个对象:

public List<TData> td = new ArrayList<TData>();

public class TData {

private long id;
private String key;
private String language;
private String translation;

public TData(){};

public TData(long id, String key, String language, String translation) {
// super();
this.id = id;
this.key = key;
this.language = language;
this.translation = translation;
}

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}

public String getLanguage() {
return language;
}

public void setLanguage(String language) {
this.language = language;
}

public String getTranslation() {
return translation;
}

public void setTranslation(String translation) {
this.translation = translation;
}

}

public List<TData> getDataObj() {
return td;
}

@PostConstruct
public void loadData() {

String query = "SELECT c FROM TranslationTestEntitie c";
List<Object> result = dao.jpqlQuery(query, 1, 0);

for(int i =0; i < result.size(); i++){
TranslationTestEntitie test = (TranslationTestEntitie) result.get(i);
td.add((TData) result.get(i));

}

}

然后我使用这个数据表来显示结果;

<h:dataTable value="#{languageBeanTest.dataObj}" var="o">

<h:column>
<f:facet name="header">Id</f:facet>
#{o.id}
</h:column>

<h:column>
<f:facet name="header">key</f:facet>
#{o.key}
</h:column>

<h:column>
<f:facet name="header">language</f:facet>
#{o.language}
</h:column>

<h:column>
<f:facet name="header">translation</f:facet>
#{o.translation}
</h:column>

</h:dataTable>

我收到此错误:

java.lang.ClassCastException: callflow.cfdbc_common.entities.TranslationTestEntitie cannot be cast to callflow.ccadmin.beans.LanguageBeanTest$TData

我从数据库中以对象列表的形式获取结果。如何将这些对象显示到 JSF 页面中?

P.S 这是实体的源代码

@Entity
@Table(name = "Translations")
public class TranslationTestEntitie extends AbstractEntityWithId {

private static final long serialVersionUID = 2029240552230401080L;

@Column(name = "id", insertable=false, updatable=false)
private long id;
@Column(name = "key", insertable=false, updatable=false)
private String key;
@Column(name = "language", insertable=false, updatable=false)

private String language;
@Column(name = "translation", insertable=false, updatable=false)
private String translation;

public TranslationTestEntitie() {
}

// Getters and setters
public Long getId() {
return id;
}

//@Transient Field will not be saved in database
public void setId(long id) {
this.id = id;
}

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}

public String getLanguage() {
return language;
}

public void setLanguage(String language) {
this.language = language;
}

public String getTranslation() {
return translation;
}

public void setTranslation(String translation) {
this.translation = translation;
}

}

我认为 JPA 返回的对象将与 TData 相同,因为我具有相同的对象属性。

最佳答案

显然,返回的对象是 TranslationTestEntitie 类型,而不是 TData 类型。您需要编写代码将 TranslationTestEntitie 转换为 TData 类型的对象。

TranslationTestEntitie test = (TranslationTestEntitie) result.get(i);
TData newTData = new TData(test.getId(), test.getKey(), test.getLanguage(), test.getTranslation());
td.add(newTData);

如果它具有相同的字段,为什么不能使用 TranslationTestEntitie 本身?

List<TranslationTestEntitie> td=  new ArrayList<TranslationTestEntitie>();

for(int i =0; i < result.size(); i++){
TranslationTestEntitie test = (TranslationTestEntitie) result.get(i);
td.add(test);
}

关于java - 显示 JSF 表中对象的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com