gpt4 book ai didi

java - 无法创建 Java 列表

转载 作者:行者123 更新时间:2023-11-29 10:19:13 25 4
gpt4 key购买 nike

我想使用 this编写代码并创建 JSF 2.0 表。

这是托管 bean 的 Java 代码:

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
// or import javax.faces.bean.SessionScoped;
import javax.inject.Named;
/* include SQL Packages */
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import javax.annotation.Resource;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
// or import javax.faces.bean.ManagedBean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.glassfish.osgicdi.OSGiService;

@Named("ApplicationController")
@SessionScoped
public class Application implements Serializable {

private List<Item> list;
private transient DataModel<Item> model;
private Item item = new Item();
private boolean edit;

@PostConstruct
public void init() {
// list = dao.list();
// Actually, you should retrieve the list from DAO. This is just for demo.
list = new ArrayList<Item>();
list.add(new Item(1L, "item1"));
list.add(new Item(2L, "item2"));
list.add(new Item(3L, "item3"));
}

public void add() {
// dao.create(item);
// Actually, the DAO should already have set the ID from DB. This is just for demo.
item.setId(list.isEmpty() ? 1 : list.get(list.size() - 1).getId() + 1);
list.add(item);
item = new Item(); // Reset placeholder.
}

public void edit() {
item = model.getRowData();
edit = true;
}

public void save() {
// dao.update(item);
item = new Item(); // Reset placeholder.
edit = false;
}

public void delete() {
// dao.delete(item);
list.remove(model.getRowData());
}

public List<Item> getList() {
return list;
}

public DataModel<Item> getModel() {
if (model == null) {
model = new ListDataModel<Item>(list);
}

return model;
}

public Item getItem() {
return item;
}

public boolean isEdit() {
return edit;
}

}

将代码导入 Netbeans 时出现此问题:

enter image description here enter image description here

如何声明 Java 列表才能工作?

祝福

编辑我这样编辑代码:

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
// or import javax.faces.bean.SessionScoped;
import javax.inject.Named;
/* include SQL Packages */
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import javax.annotation.Resource;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
// or import javax.faces.bean.ManagedBean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.glassfish.osgicdi.OSGiService;

@Named("ApplicationController")
@SessionScoped
public class Application implements Serializable {

public Application() {
}

private List<Application> list;
private transient DataModel<Application> model;
private Application item = new Application();
private boolean edit;

private Application(long l, String string) {
throw new UnsupportedOperationException("Not yet implemented");
}

@PostConstruct
public void init() {
// list = dao.list();
// Actually, you should retrieve the list from DAO. This is just for demo.
list = new ArrayList<Application>();
list.add(new Application(1L, "item1"));
list.add(new Application(2L, "item2"));
list.add(new Application(3L, "item3"));
}

public void add() {
// dao.create(item);
// Actually, the DAO should already have set the ID from DB. This is just for demo.
item.setId(list.isEmpty() ? 1 : list.get(list.size() - 1).getId() + 1);
list.add(item);
item = new Application(); // Reset placeholder.
}

public void edit() {
item = model.getRowData();
edit = true;
}

public void save() {
// dao.update(item);
item = new Application(); // Reset placeholder.
edit = false;
}

public void delete() {
// dao.delete(item);
list.remove(model.getRowData());
}

public List<Application> getList() {
return list;
}

public DataModel<Application> getModel() {
if (model == null) {
model = new ListDataModel<Application>(list);
}

return model;
}

public Application getItem() {
return item;
}

public boolean isEdit() {
return edit;
}

private void setId(int i) {
throw new UnsupportedOperationException("Not yet implemented");
}

private int getId() {
throw new UnsupportedOperationException("Not yet implemented");
}

}

你看到任何错误了吗?

最佳答案

您必须定义 Item 类。

更新:

保持代码的第一种形式。您应该有一个 Item 类。

public class Item {
private long id;
private String name;
public Item() {}
public Item(long id, String name) {
this.id = id;
this.name = name;
}
//getters and setters for the attributes...
}

现在,在更新后的代码中,您正在使用 Application 对象列表。所以你的 Application 类应该有 2 个 longString 类型的属性:

//annotations here...
public class Application implements Serializable {
private long id;
private String name;
//getters and setters for these attributes...

public Application() {
//keep your actual code here
}

//we have to add a constructor that receives a long and a String
//to initialize the attributes values.
public Application(long id, String name) {
this.id = id;
this.name = name;
}

//your actual code...
}

第二种选择不是一个好的做法,我建议您将 Backing Bean(托管 Bean)类与您的模型类(在本例中为 Item 类)分开。

关于java - 无法创建 Java 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9957749/

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