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).