Problemas com formulário

4 respostas
D

Fala galera…to montando e formulário e ele só é exibido na tela se eu deixo a property do campo como ‘id’ … assim como no exemplo abaixo:

<TD> <html:text maxlength='10' size='10' property="id" styleClass="frmTxt1"/>  </TD> </TR>
eu não posso deixar todos os campos como ID pq esse é o método que vai usar oara busca, alguém pdoe me ajudar e explicar pq eu não consigo mudar a property do campo??

ahh e no console do eclipse, ele me dá a seguinte mensagem:

2006-07-12 10:25:29,810 ERROR [http-8080-Processor25] (InsertTag.java:920) - ServletException in '/views/contrato/cadContrato_ins.jsp': No getter method for property idcto of bean org.apache.struts.taglib.html.BEAN javax.servlet.ServletException: No getter method for property idcto of bean org.apache.struts.taglib.html.BEAN

vlw…abnraços

[]'s

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - marcossousa[/color][/size] :joia:

4 Respostas

M

Opa,

Acontece que para você criar uma nova propriedade você tem que declarar no teu struts-config esta propriedade dentro de seu form bean.

:okok:

D

no struts-config está assim:

<form-bean name="contratoForm" type="br.web.blankproject.view.action.cadastros.cadcontrato.ContratoForm" />

e no meu contratoForm está assim:

package gpbr.web.blankproject.view.action.cadastros.cadcontrato;

import br.blankproject.integration.vo.ContratoVO;
import br.util.DateUtils;
import br.util.NumberUtils;
import br.util.StringUtils;
import br.web.form.FormBean;

import java.io.Serializable;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionMapping;


public class ContratoForm extends FormBean {
    private String id = "";
    private String idcto = "";
    private String aqdata = "";
    private String vctdata = "";
    
    
    public Serializable getPersistentObj() {
        ContratoVO ContratoVO = new ContratoVO();
        if (StringUtils.trimToNull(id) != null) {
        	ContratoVO.setId(NumberUtils.createInteger(id));
        }
        if (StringUtils.trimToNull(idcto) != null) {
        	ContratoVO.setIdcto(NumberUtils.createInteger(idcto));
        }
        if (StringUtils.trimToNull(aqdata) != null) {
        	ContratoVO.setAqdata(DateUtils.convertToDate(aqdata));
        }
        if (StringUtils.trimToNull(vctdata) != null) {
        	ContratoVO.setVctdata(DateUtils.convertToDate(vctdata));
        }	
        	
        }
        return ContratoVO;
    }

    public String getId() {
        return id;
    }

    public void setId(String idContrato) {
        this.id = idContrato;
    }
    
    public String getIdcto() {
    	return idcto;
    }
    
    public void setIdcto(String idctoContrato) {
    	this.idcto = idctoContrato;
    }
    
    public String getAqdata() {
    	return aqdata;
    }
    
    public void setAqdata(String aqdataContrato) {
    	this.aqdata = aqdataContrato;
    }
    
    public String getVctdata() {
    	return vctdata;
    }
    
    public void setVctdata(String vctdataContrato) {
    	this.vctdata = vctdataContrato;
    }
    
    	


    public void reset(ActionMapping mapping, HttpServletRequest request) {
        id = "";
        idcto = "";
        aqdata = "";
        vctdata = "";
    }
}

eu criei umas coisas dentro do contratoVO ( segui o mesmo padrão do arquivo modeloVO ), continua só aparecendo se eu mudar todos os property para ‘id’
ser novato é foda ¬¬ hehe

ahh a página de inserir, eu copie do modelo e os únicos nomes que funcionam no property são ‘id’ e ‘nome’ pq são os q a outra página usa.

alguma idéia do que pode ser isso??

M

bem acho que não é possível declarar o seu form bean desta forma, o que eu acho que seria muito louco, mas até onde eu saiba, você tem que declarar desta forma.

<form-beans> <form-bean name="contratoForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="id" type="java.lang.Integer"/> <form-property name="nome" type="java.lang.String"/> .... </form-bean>

:okok:

D

fala marcos…blza??

consegui resolver o problema…eu mudei o button para a seguinte configuração:

<html:text  maxlength='10' size='10' property="id" styleClass="frmTxt1" value=''/> 

mas agora eu com problema qdo vou inserir dados…tipo eu digito os dados e aperto para inserir e aparece a seguinte mensagem no console

2006-07-13 09:42:13,246 ERROR [http-8080-Processor23] (LogComponent.java:92) - Erro ao executar Procedure de findById para o persistence object gpbr.blankproject.integration.vo.ContratoVO
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Could not find stored procedure 'SELECT_CONTRATO_BY_ID'.

eu nao criei nada no banco de dados ainda…eu preciso criar? ou este erro é pq eu criei a procedure errada??..a procedura está assim:

<procedureMapping>
			<valueObject>br.blankproject.integration.vo.ContratoVO</valueObject>
				<procedures>
					<insert>{call INSERT_CONTRATO([id], [idcto], [aqdata], [vctdata])}</insert>
					<delete>{call DELETE_CONTRATO([id])}</delete>
					<update>{call UPDATE_CONTRATO([id], [idcto], [aqdata], [vctdata])}</update>
                    <selectAll>{call SELECT_CONTRATO()}</selectAll>
					<findById>{call SELECT_CONTRATO_BY_ID([id])}</findById>  
          		</procedures>
		</procedureMapping>

e o contratoVO está deste jeito:

package br.blankproject.integration.vo;

import java.util.Date;

import br.core.basic.vo.ValueObject;

public class ContratoVO extends ValueObject {
    public Integer id;
    public Integer idcto;
    public Date aqdata;
    public Date vctdata;
    
    
    
    /**
     * Id de Contrato
     * @return
     */
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
    /**
     * Tipo de contrato
     */
    public Integer getIdcto() {
    	return idcto;
    }
    
    public void setIdcto(Integer idcto) {
    	this.idcto = idcto;
    }
    
    /**
     * Data de aquisicao do contrato
    */
    
    public Date getAqdata() {
    	return aqdata;
    }
    
    public void setAqdata(Date date) {
    	this.aqdata = aqdata;
    }
    
    /**
     * Data de vencimento de contrato
     */
    
    public Date getVctdata() {
    	return vctdata;
    }
    
    public void setVctdata(Date date ) {
    	this.vctdata = vctdata;
    }	
    
    
    
    
    
	public String[] getRelationshipAttributes() {
		return null;
	}


}
Criado 12 de julho de 2006
Ultima resposta 13 de jul. de 2006
Respostas 4
Participantes 2