mudança tipo de List <String>

Jan:

Eu quero inserir os valores dos produtos que são do tipo arrayList no banco de dados, mas eu estou recebendo este erro "java.lang.String cannot be cast to model.Product". O problema é com o elenco que eu fiz no servlet. este é o seu código:

String buyer = request.getParameter("buyer");
List<String> prodlist = Arrays.asList(request.getParameterValues("product"));

List<Product> prodmlist = (List<Product>) (List<?>) prodlist;
Bill bill = new Bill(buyer, prodmlist);
myDAO.add(bill);

e este é o método que vai ser preenchido

public static void add(Bill bill) {
Connection cnx;
    try {
    cnx = Connect.getConnection();
    String req = "insert into bil values (?,?)";
    PreparedStatement st = cnx.prepareStatement(req);
    st.setString(1, bill.getBuyer());
    for (Product prod : bill.getProduct()) {
        st.setString(2, prod.getName());
        st.addBatch(); // add the statement to the batch
    }
    st.executeUpdate();    
    cnx.commit();
}
David Brossard

Em seu código:

List<String> prodlist = Arrays.asList(request.getParameterValues("product"));
// Need to convert here...
List<Product> prodmlist = (List<Product>) (List<?>) prodlist;

Você precisa converter explicitamente a partir List<String>de List<Product>. Faça algo ao longo das linhas de:

List<Product> products = new ArrayList<Product>();
for (String s: prodList){
    Product p = new Product();
    p.setName(s);
    products.add(p);
}

Agora, eu estou fazendo a suposição de que você tem um setter para definir o nome do produto. Pode ser que você tem um construtor que você pode passar o nome (e salvar uma linha de código).

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=314198&siteId=1
Recomendado
Clasificación