Oii!!!!
Pessoal,
Estou com uma duvida, se alguém pode me dar uma ajuda, tenho um cadastro de Cliente, onde tenho que cadastrar alem do cliente uma lista de contatos, uma lista de telefones e fora que o contato tem uma lista de emails e lista de telefones pra cadastrar.
Estou usando minha entidade pra pegar os dados da tela tenho que cadastrar tudo junto: segue os codigos: Minha Controller@Controller
public class ClienteController {
ModelAndView viewTiles;
private static String CADASTRO_CLIENTE = "cadastro.cliente";
private static final Logger logger = LoggerFactory.getLogger(ClienteController.class);
@Autowired
@Qualifier("clienteService")
private ClienteService clienteService;
@Autowired
@Qualifier("estadoService")
private EstadoService estadoService;
@ModelAttribute("listaTipoTelefone")
public TipoTelefone[] listaTipoTelefone(){
return TipoTelefone.values();
}
@ModelAttribute("listaTipoEmail")
public TipoEmail[] listaTipoEmail(){
return TipoEmail.values();
}
@ModelAttribute("listaEstados")
public List<Estado> listaUF(){
return estadoService.listAll() ;
}
@RequestMapping(value = "listCliente", method = RequestMethod.GET)
public ModelAndView listarClientes(@ModelAttribute("cliente")Cliente cliente,
@ModelAttribute("contato") Contato contato,@ModelAttribute("telefone")Telefone telefone,
@ModelAttribute("email") Email email,
ModelMap modelMap, ModelAndView model) {
try {
List<Cliente> listaModelos = clienteService.listAll();
List<Telefone> listaTelefones = new ArrayList<Telefone>();
listaTelefones = cliente.getTelefones();
List<Contato> listaContatos = new ArrayList<Contato>();
listaContatos = cliente.getContatos();
List<Telefone> listaContatoTelefones = new ArrayList<Telefone>();
listaContatoTelefones = contato.getTelefones() ;
List<Email> listaContatoEmail = new ArrayList<Email>();
listaContatoEmail = contato.getEmails();
logger.info("Listar Clientes cadastrados.........");
modelMap.addAttribute("listaTelefones", listaTelefones);
modelMap.addAttribute("listaContatos", listaContatos);
modelMap.addAttribute("listaContatoTelefones", listaContatoTelefones);
modelMap.addAttribute("listaContatoEmail", listaContatoEmail);
modelMap.addAttribute("listaCliente", listaModelos); //
ModelAndView viewTiles = new ModelAndView(CADASTRO_CLIENTE);
return viewTiles;
} catch (Exception e) {
String erro = MessageFormat.format("Erro buscar lista de clientes: {0}", e.getMessage());
logger.error(erro);
throw new SGAControllerException(erro);
}
}
@Entity
@Table(name = "TB_CLIENTE")
@SQLDelete(sql = "update TB_CLIENTE set FL_ATIVO = 'FALSE' where ID_CLIENTE = ?")
@Where(clause="FL_ATIVO = 'TRUE'")
public class Cliente implements Serializable {
public Cliente() {
ativo =true;
}
private static final long serialVersionUID = -4905988982554153192L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_CLIENTE")
@SequenceGenerator(name = "SEQ_CLIENTE", initialValue = 1)
@Column(name = "ID_CLIENTE")
private Long id;
@Lob
@Column(name = "CL_OBSERVACAO")
private String observacao;
@Column(name = "DS_SITE")
@URL
private String site;
@OneToOne
@JoinColumn(name = "ID_PESSOA_JURIDICA")
private PessoaJuridica pessoaJuridica;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "ID_ENDERECO")
private Endereco endereco;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "TB_CLIENTE_CONTATO)", joinColumns = { @JoinColumn(name = "ID_CLIENTE") }, inverseJoinColumns = { @JoinColumn(name = "ID_CONTATO") })
private List<Contato> contatos;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "TB_CLIENTE_TELEFONE", joinColumns = { @JoinColumn(name = "ID_CLIENTE") }, inverseJoinColumns = { @JoinColumn(name = "ID_TELEFONE") })
private List<Telefone> telefones;
<form:form modelAttribute="telefone">
<div class="coluna1">
<label for="tipoTelefone"><fmt:message key="label.tipoTelefone" /><fmt:message key="label.doispontos" /></label>
</div>
<div class="coluna2">
<form:select path="tipoTelefone">
<form:option value=""><fmt:message key="label.selecione"/></form:option>
<c:forEach items="${listaTipoTelefone}" var="tipoTelefone">
<form:option value="${tipoTelefone}">${tipoTelefone.descricao}</form:option>
</c:forEach>
</form:select>
</div>
<div class="coluna1">
<label for="telefone"><fmt:message key="label.numero" />
<fmt:message key="label.doispontos" /></label>
</div>
<div class="coluna2">
<input type="text" name="numero" id="numero"
value="${numero }" />
</div>
<div class="coluna1">
<label for="ramal"><fmt:message key="label.ramal" />
<fmt:message key="label.doispontos" /></label>
</div>
<div class="coluna2">
<input type="text" name="ramal" id="ramal"value="${ramal }" />
</div>
<div class="botao1">
<input type="buton" value="Add Telefones do Cliente" />
</div>
</form:form>
<c:choose>
<c:when test="${not empty listaTelefones}">
<article class="litaTabela">
<table id="green">
<thead>
<tr class="ui-widget-header ">
<th><fmt:message key="label.tipoTelefone"></fmt:message></th>
<th><fmt:message key="label.numero" /></th>
<th><fmt:message key="label.ramal" /></th>
<th><fmt:message key="label.editar" /></th>
<th><fmt:message key="label.deletar" /></th>
<th><fmt:message key="label.visualizar" /></th>
</tr>
</thead>
<tbody>
<c:forEach var="tel" items="${listaTelefones}" varStatus="contador">
<c:if test="${contador.count % 2 == 0}">
<tr bgcolor="#B0C4DE">
</c:if>
<c:if test="${contador.count % 2 == 1}">
<tr bgcolor="WhiteSmoke">
</c:if>
<td>${tel.tipoTelefone}</td>
<td>${tel.tefone}</td>
<td>${tel.ramal}</td>
<td><a href="editarTelefone.html?id=${tel.id}"><img
alt="editar" src="resources/css/images/editar.png"></a></td>
<td><a href="deletarTelefone.html?id=${tel.id}"><img
alt="Deletar" src="resources/css/images/excluir.png"></a></td>
<td><a href="vizualizarTelefone.html?id=${tel.id}"><img
alt="Visualizar" src="resources/css/images/visualizar.png"></a></td>
</tr>
</c:forEach>
</tbody>
</table>
</article>
</c:when>
</c:choose>
As lista etou fazendo assim pode adicionar vários telefones pra depois salvar o Cliente todo.
Não sei como vou preencher a lista de telefones.
Não sei se existe uma maneira mais fácil de fazer
Abraços