Parametros [ RESOLVIDO]

[quote=markIron][code]

Bom…dei uma mechida no Codigo e consegui fazer algumas mudanças.

sendo assim… o problema é…

na classe Escolher uf Action…

Eu consigo salvar no Banco se somente selecionar o id_municipio na combobox… pelo campo do Banco ser do tipo int

porém se eu colocar vamos supor NA COMBOBOX --> (1 CANOAS)

não salva e da um erro assim…

java.lang.String cannot be cast to java.lang.Integer
at br.com.impacta.cliente.app.action.bairro.BairroOkAction.actionPerformed(BairroOkAction.java:59)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

erro dessa classe…

BairroOkAction

public void actionPerformed(ActionEvent e) {

	Bairro domain;

	try {

		String NomeBairro = view.getNomeJTextField().getText();
		UFVO uf = (UFVO) view.getUfJComboBox().getSelectedItem();



		
		
		String nome = (String) view.getMunicipioJComboBox().getSelectedItem().toString();
		
		Integer municipio = (Integer) view.getMunicipioJComboBox().getSelectedItem();
		


		if (view.getaAlterar() != null) {
			domain = (Bairro) view.getaAlterar();

		} else {
			domain = new Bairro();
		}

		
				
		
		domain.setNome(NomeBairro); // seta o nome do bairro
		domain.setMunicipio(new Municipio());
		domain.getMunicipio().setNome(String.valueOf(municipio));

		domain.getMunicipio().setId(municipio);

		view.getService().validar(domain); // valida
		view.getService().salvar(domain); // salva
		view.carrega_nome_bairro(NomeBairro, uf);

como reoslver essa questa…

[/code]

[/quote]
Um parseInt não resolve, não?



entao.. oque esta na combobox  é uma String..
quero transformar de String para Int.. ou Integer..
que é o campo do Banco do tipo int.

Integer.parseInt(“STRING AQUI”);



vou tentar aqui.. poois so falta esse detalhe pra terminar o projeto

tentei e me retornou um erro…

[color=red]java.lang.NumberFormatException: For input string: “CANOAS”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at br.com.impacta.cliente.app.action.bairro.BairroOkAction.actionPerformed(BairroOkAction.java:81)

[/color]



	@Override
	public void actionPerformed(ActionEvent e) {

		Bairro domain;

		try {

			String NomeBairro = view.getNomeJTextField().getText();
			UFVO uf = (UFVO) view.getUfJComboBox().getSelectedItem();

			String municipio = (String) view.getMunicipioJComboBox()
					.getSelectedItem();

			Integer id = (Integer) view.getMunicipioJComboBox()
					.getSelectedIndex();

			if (view.getaAlterar() != null) {
				domain = (Bairro) view.getaAlterar();

			} else {
				domain = new Bairro();
			}

			domain.setNome(NomeBairro); // seta o nome do bairro
			// domain.setMunicipio(new Municipio());

			domain.setMunicipio(new Municipio());
			domain.getMunicipio().setNome(municipio);
			domain.getMunicipio().setNome(String.valueOf(id));
			domain.getMunicipio().setId(Integer.parseInt(municipio));   >>>  Onde fiz a conversão que vc me orientou

			// domain.getMunicipio().setNome(String.valueOf(municipio));

			view.getService().validar(domain); // valida
			view.getService().salvar(domain); // salva
			view.carrega_nome_bairro(NomeBairro, uf);

		} catch (NumberFormatException cause) {
			cause.printStackTrace();
			JOptionPane.showMessageDialog(
					view,
					"erro ao carregar" + cause.getMessage()
							+ cause.getLocalizedMessage());
		} catch (BairroException e1) {
			e1.printStackTrace();
		} catch (Exception e1) {
			e1.printStackTrace();
		}

Me referia à isso:
int municipio = Integer.parseInt(view.getMunicipioJComboBox().getSelectedItem());

public void actionPerformed(ActionEvent e) {   
31.  
32.        Bairro domain;   
33.  
34.        try {   
35.  
36.            String NomeBairro = view.getNomeJTextField().getText();   
37.            UFVO uf = (UFVO) view.getUfJComboBox().getSelectedItem();   
38.  
39.  
40.  
41.               
42.               
43.            String nome = (String) view.getMunicipioJComboBox().getSelectedItem().toString();   
44.               
45.            int municipio = Integer.parseInt(view.getMunicipioJComboBox().getSelectedItem());   
46.               
47.  
48.  
49.            if (view.getaAlterar() != null) {   
50.                domain = (Bairro) view.getaAlterar();   
51.  
52.            } else {   
53.                domain = new Bairro();   
54.            }   
55.  
56.               
57.                       
58.               
59.            domain.setNome(NomeBairro); // seta o nome do bairro   
60.            domain.setMunicipio(new Municipio());   
61.            domain.getMunicipio().setNome(nome);   
62.  
63.            domain.getMunicipio().setId(municipio);   
64.  
65.            view.getService().validar(domain); // valida   
66.            view.getService().salvar(domain); // salva   
67.            view.carrega_nome_bairro(NomeBairro, uf);   

Ficaria assim



Entendi... mas ainda da o mesmo erro.. cara

Tipo ainda  da  Input for String

O problema é que vc tá passando a String “CANOAS”, por exemplo, e querendo transformar ela em um int. Aí ñ vai dar msm não. Isto aqui não funciona:
Integer.parseInt(“CANOAS”).
Só vai dar certo se a String na qual vc der um parseInt conter apenas elementos numéricos.
Ex.: Integer.parseInt(“1234”);



Mas contem elementos numéricos...pq atravez de outra classe estou passando para a combobox e setando.

atravez do resulset  e do Select.

Qual o retorno disso:

view.getMunicipioJComboBox().getSelectedItem()

ele retorna o que tem dentro da combobox.

que é uma String com numeração de acordo com oque fui setando.

A classe EscolherUFaction…

é a responsavel por passar os Objetos para a combobox…

e a classe BairroOkAction… onde está dando esse erro

é a responsavel por salvar no BD

E oq exatamente vc está passando na combobox?
Coloca a stacktrace e a linha onde dá o erro tb, por favor


Vamos lá..

Estou passando Uma String...com a numeracao ao lado.. exemplo  1  - CANOAS

Isso está na combobox..  na classe EscolherufAction.

sendo assim...

a conveorsão que vc passou deveria ter dado certo cara.. nao sei onde to errando..

SELECT b.id_bairro, b.nm_bairro, m.id_municipio, m.nm_municipio FROM bairro b INNER JOIN municipio m ON(m.id_municipio = b.id_municipio) WHERE b.nm_bairro LIKE ? AND m.id_uf = ?

[color=red]java.lang.NumberFormatException: For input string: “1-CANOAS”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at br.com.impacta.cliente.app.action.bairro.BairroOkAction.actionPerformed(BairroOkAction.java:58)
at javax.swing.AbstractButton.fireActionPerfor[/color]

linha 58

			 int municipio = Integer.parseInt((String) view.getMunicipioJComboBox().getSelectedItem());  			

String splitComboBox[] = ((String)view.getMunicipioJComboBox().getSelectedItem()).split("-"); int idDoMunicipio = Integer.parseInt(splitComboBox[0]);

Faça isto, então.
Aí vc vai pegar só a parte númerica do “1-CANOAS”




fiz assim... e mesmo assim insiste no erro huahuahuahuaa.. 
ve se fiz certo..


	@Override
	public void actionPerformed(ActionEvent e) {

		Bairro domain;

		try {

			String NomeBairro = view.getNomeJTextField().getText();
			UFVO uf = (UFVO) view.getUfJComboBox().getSelectedItem();

			String[] splitComboBox = ((String) view.getMunicipioJComboBox()
					.getSelectedItem()).split("-");
			int idDoMunicipio = Integer.parseInt(splitComboBox[0]);

			if (view.getaAlterar() != null) {
				domain = (Bairro) view.getaAlterar();

			} else {
				domain = new Bairro();
			}

			domain.setNome(NomeBairro); // seta o nome do bairro
			domain.getMunicipio().setId(idDoMunicipio);

			view.getService().validar(domain); // valida
			view.getService().salvar(domain); // salva
			view.carrega_nome_bairro(NomeBairro, uf);

Agora é qual o erro e em qual linha?