Java 显示JSF表中对象的数组列表
我想在JSF表中显示对象的ArrayList: 我创建了这个对象:Java 显示JSF表中对象的数组列表,java,jsf,jpa,jsf-2,Java,Jsf,Jpa,Jsf 2,我想在JSF表中显示对象的ArrayList: 我创建了这个对象: public List<TData> td = new ArrayList<TData>(); public class TData { private long id; private String key; private String language; private String translation;
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));
}
}
我以对象列表的形式从数据库中获取结果。如何将这些对象显示到JSF页面中
这是实体的源代码
@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);
}
List td=new ArrayList();
对于(int i=0;i
我更新了帖子。这两个对象具有相同的属性。这不会改变答案:)您必须编写一个方法,使用TranslationTestEntitie对象中的值创建一个新的TData对象。我是这项技术的新手,请您给我一些如何解决此问题的详细信息。如果它具有相同的字段,为什么不能使用TranslationTestEntitie本身?
我怎么做?您可以创建一个TranslationTestEntitie列表(而不是TData),然后简单地将结果添加到循环中。为什么不使用列表而不是列表?
TranslationTestEntitie test = (TranslationTestEntitie) result.get(i);
TData newTData = new TData(test.getId(), test.getKey(), test.getLanguage(), test.getTranslation());
td.add(newTData);
List<TranslationTestEntitie> td= new ArrayList<TranslationTestEntitie>();
for(int i =0; i < result.size(); i++){
TranslationTestEntitie test = (TranslationTestEntitie) result.get(i);
td.add(test);
}