Insert Multiple Items

2 respostas
F

Fala ae galera, blz?

Po gostaria de uma ajuda…

No meu form tem uma lista multipla com varios nomes, que o usuario pode escolher alguns itens.
Qual a melhor forma deu inserir isso?

Guardo num array e faço um foreach???

Algum pode me mostrar um exemplo?
Obrigado!!!

2 Respostas

Vin_ius_Abreu_de_Fra

Como assim “lista múltipla”? Você quer dizer uma multilista que contem no primeiro grau uma lista de nomes e cada nome uma lista de itens? Se for isso java já tem umas imlementações qe dá pra usar Mas talvez uma

Map<String, List<Item>> listaMultipla = new HashMap<String, List<Item>>();

Acho que ainda não é a melhor implementação mas quebra um galho, falou!

F

Não estou conseguindo cadastrar...

Os 3 primeiros campos gravam na tabela, a parte que tem que gravar na outra tabela da erro!

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
	br.com.scb.dao.ProjetosDAO.adiciona(ProjetosDAO.java:40)
	br.com.scb.action.CadastraProjetosAction.execute(CadastraProjetosAction.java:21)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
	org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
	org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510)
	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.

cadastrar-projetos.jsp

<form action="cadastraProjetos" method="post" id="valid" class="mainForm">
        
      <div class="widget first">
            <div class="head"><h5 class="iList">Cadastrar Projetos</h5></div>
            
            <div class="rowElem nobg">
                <label>Título:</label>
                <div class="formRight">
                <input type="text" name="projetos.titulo"/>
                </div><div class="fix"></div>
            </div>
            
            <div class="rowElem">
                <label>Resumo:</label>
                <div class="formRight">
                    <textarea rows="8" cols="" name="projetos.resumo"></textarea>
                </div>
                <div class="fix"></div>
            </div>
                
            <div class="rowElem nobg">
                <label>Professor Orientador:</label>
                <div class="formRight">
                <select name="projetos.id_professores" >
                	<option value="opt1">Selecione um orientador</option>
                	
	                <c:forEach var="professor" items="${dao.lista}"> 
	                    <option value="${professor.id_professores}">${professor.professor}</option>
	                </c:forEach>	
	                
                </select>
                </div>
                <div class="fix"></div>
            </div>
            
            <div class="rowElem dualBoxes">
            <h6>Componentes do Projeto</h6><br />
               
              <div class="floatleft w40">
                    
              		<select id="box1View" multiple="multiple" class="multiple" style="height:200px;">
                        
                        <c:forEach var="aluno" items="${dao_aluno.lista}"> 
	                    	<option value="${aluno.id_alunos}">${aluno.nome}</option>
	                	</c:forEach>
	                	
                    </select>
                    <br/>
                    <span id="box1Counter" class="countLabel"></span>
                    
                    <div class="displayNone"><select id="box1Storage"></select></div>
                </div>
                    
                <div class="floatleft dualControl">
                    <button id="to2" type="button" class="dualBtn mr5 mb15">&nbsp;&gt;&nbsp;</button>
                    <button id="allTo2" type="button" class="dualBtn">&nbsp;&gt;&gt;&nbsp;</button><br />
                    <button id="to1" type="button" class="dualBtn mr5">&nbsp;&lt;&nbsp;</button>
                    <button id="allTo1" type="button" class="dualBtn">&nbsp;&lt;&lt;&nbsp;</button>
                </div>
                    
                <div class="floatright w40">
                  <select name="projetos.componentes" id="box2View" multiple="multiple" class="multiple" style="height:240px;"></select><br/>
                    <span id="box2Counter" class="countLabel"></span>
                    
                    <div class="displayNone"><select id="box2Storage"></select></div>
              </div>
            <div class="fix"></div>
            </div>
            
            <!--FIM COMPONENTE-->
            
              <input type="submit" value="Cadastrar" class="basicBtn submitForm mb22" />
              <div class="fix"></div>

        </div>
        
        </form>

CadastraProjetosAction.java

package br.com.scb.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;

import br.com.scb.modelo.Projetos;
import br.com.scb.dao.ProjetosDAO;

public class CadastraProjetosAction extends ActionSupport {

	private static final long serialVersionUID = -5817485575269317513L;
	
	private Projetos projetos;
	
	@Action( value="cadastraProjetos", results = {
			@Result(name="ok", location="/cadastrar-projetos.jsp")
	})
	
	public String execute(){
		new ProjetosDAO().adiciona(projetos);
		
		addActionMessage("Projeto cadastrado com sucesso!");
		return "ok";		
	}

	public Projetos getProjetos() {
		return projetos;
	}

	public void setProjetos(Projetos projetos) {
		this.projetos = projetos;
	}
	
	
}

ProjetosDAO

package br.com.scb.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.scb.jdbc.ConnectionFactory;
import br.com.scb.modelo.Componentes;
import br.com.scb.modelo.Projetos;

public class ProjetosDAO {
	
	private final Connection connection;
	
	public ProjetosDAO(){
		connection = new ConnectionFactory().getConnection();
	}
	
	//ADICIONAR Projetos
	
	public void adiciona(Projetos projetos) {
 		
		String sql = "INSERT INTO projetos (titulo, resumo, id_professores) values (?,?,?)";
		PreparedStatement stmt;
		try {
			stmt = connection.prepareStatement(sql);
			stmt.setString(1, projetos.getTitulo());
			stmt.setString(2, projetos.getResumo());
			stmt.setInt(3, projetos.getId_professores());
			stmt.execute();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		
		String sqlComponentes = "INSERT INTO componentes_projetos (componentes_projetos, id_projetos) values (?,?)";
		PreparedStatement stmtComponentes;
		
		for(Componentes componente : projetos.getComponentes()){
			try {
				stmtComponentes = connection.prepareStatement(sqlComponentes);
				stmtComponentes.setString(1, componente.getComponentes_projetos());
				stmtComponentes.setInt(2, projetos.getId_projetos());
				stmtComponentes.execute();
			} catch (SQLException e) {
				throw new RuntimeException(e);
			}
		}
		
	}
}

Projetos.java

package br.com.scb.modelo;

import java.util.List;

public class Projetos {
	
	private int id_projetos;
	private String titulo;
	private String resumo;
	private int id_professores;
	private List<Componentes> componentes;
	
	public List<Componentes> getComponentes() {
		return componentes;
	}
	public void setComponentes(List<Componentes> componentes) {
		this.componentes = componentes;
	}
	public int getId_projetos() {
		return id_projetos;
	}
	public void setId_projetos(int id_projetos) {
		this.id_projetos = id_projetos;
	}
	public String getTitulo() {
		return titulo;
	}
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
	public String getResumo() {
		return resumo;
	}
	public void setResumo(String resumo) {
		this.resumo = resumo;
	}
	public int getId_professores() {
		return id_professores;
	}
	public void setId_professores(int id_professores) {
		this.id_professores = id_professores;
	}

	
}

Componentes.java

package br.com.scb.modelo;

public class Componentes {
	private int id_componentes_projetos;
	private String componentes_projetos;
	
	public int getId_componentes_projetos() {
		return id_componentes_projetos;
	}
	public void setId_componentes_projetos(int id_componentes_projetos) {
		this.id_componentes_projetos = id_componentes_projetos;
	}
	public String getComponentes_projetos() {
		return componentes_projetos;
	}
	public void setComponentes_projetos(String componentes_projetos) {
		this.componentes_projetos = componentes_projetos;
	}
}
Criado 27 de março de 2012
Ultima resposta 28 de mar. de 2012
Respostas 2
Participantes 2