Problemas com o preenchimento do form

Oi galera td bem?

Tô precisando de uma ajudinha aki…

tô fazendo uma aplicação usando struts e jsp pra web, e não estou conseguindo alterar, estão ocorrendo 2 erros, um é que ele não está preenchendo o form na hora que eu clico no link pra alterar, no código eu passo o id, busco o value e seto uma variavel do tipo form que eu estou usando e daí eu faço um mapping.findForward pra mandar pro jsp

e quando eu mando alterar no banco ele dá um null exception…
e não altera… o mais engaçado é que eu criei uma classe estática pra testar o metodo update e ele tá alterando normalmente… acho que meu problema pode estar no jsp…

alguem pode me dar uma mãozinha???

Oi,

poste o código. :wink:

Ah o erro do alterar eu arrumei agora eu naum estou conseguindo preencher o form vou postar meu Action e meu jsp…

O action é esse:

/* Project : DataAccess_EasyProject
 * Created on May 3, 2005
 * Author: Maria de Fatima Silveira Bianchim 
 * 
 * Purpose: Declaration of class RequisitoAction.java
 * 
 * Copyright 2005, INATEL Centro de Competência em Telecomunicações
 * All rights are reserved. Reproduction in whole or part is
 * prohibited without the written consent of the copyright owner.
 */

package com.icc.easyproject.web.actions;

import java.sql.SQLException;
import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.tools4j.dbfw.bean.InconsistenceException;

import com.icc.easyproject.business.EasyProjectDelegate;
import com.icc.easyproject.valueobjects.RequisitoValue;
import com.icc.easyproject.web.forms.RequisitoForm;
import com.icc.library.GenericException;

/**
 * @author fatima
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class RequisitoAction extends Action 
{
    private RequisitoValue m_requisitoValue = null;
	private EasyProjectDelegate m_easyprojectDelegate = null;
	private ActionErrors m_actionErrors = null;
	private String m_sSystemaId = null;
	
	
    /**
     * Constructor
     */
    public RequisitoAction() {
        m_actionErrors = new ActionErrors();
        m_easyprojectDelegate = new EasyProjectDelegate();
    }
    
    /**
	 * Método responsável por receber o evento de action do formulário
	 * RequisitoForm e invocar o método relacionado a este evento.
	 * @param ActionMapping Contém informações para mapear a requisição do usuário.
	 * @param ActionForm Contém todos os campos do formulário da página.
	 * @param HttpServletRequest Mantém os dados do request do usuário.
	 * @param HttpServletResponse Mantém os dados para efetuar o response ao usuário.
	 * @return ActionForward Encaminha para uma determinada página.
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form, 
			 HttpServletRequest request, HttpServletResponse response)throws Exception
	{
	    RequisitoForm requisitoForm = (RequisitoForm)form;
		m_actionErrors.clear();
	    
	    String action = request.getParameter("Submit");
	   	
	    
		if((action != null) && (!action.equals("")))
		{
		    if(action.equals("Novo"))
			{
		        //encaminha para requisitos.jsp
		        requisitoForm.reset();
		        m_sSystemaId = "1";
		        requisitoForm.setSistema_Id(new Integer(m_sSystemaId));//na verdade preciso pegar o SystemId de algum lugar...
				return mapping.findForward("requisitos");
			}
		    else if(action.equals("Alterar"))//naum tah funcionando...
		    {
		        //altera de fato as informações q o banco contem		        		    
		        return updateRequisito(form, mapping, request);
		        
		    }
		    else if (action.equals("Remove"))
		    {
		        String sId = (String)request.getParameter("id");
				return removeRequisito((RequisitoForm)form, Integer.parseInt(sId), mapping, request);
		    }
		    else if (action.equals("Altera"))//ele naum tah preenchendo o form
		    {
		        //buscar informações no banco sobre um determinado requisito e preencher o form
		        String sId = (String)request.getParameter("id");		       
		        return retriveRequisito (Integer.parseInt(sId), mapping, request, (RequisitoForm)form);
		    }		   
		    else if(action.equals("Incluir"))
		    {
		        //incluir um determinado requisito no banco
		        return insertRequisito(form, mapping, request);
		    }
		    else if(action.equals("Cancelar"))
		    {
		        //retornar a pg requisitosList.jsp
		        return mapping.findForward("requisitosList");
		    }
		}
		return retriveRequisitoBySystem(new Integer("1"), mapping, request, (RequisitoForm)form);
		//como posso pegar o id do sistema??
	}

    /**
     * @param id variavel que contem o Id do requisito selecionado
     * @param ActionMapping Contém informações para mapear a requisição do usuário.
	 * @param ActionForm Contém todos os campos do formulário da página.
	 * @param HttpServletRequest Mantém os dados do request do usuário.
     * @return mapping.findForward("requisitos");
     * @throws InconsistenceException
     * @throws SQLException
     * @throws NumberFormatException
     */
    private ActionForward retriveRequisito(int iId, ActionMapping mapping, HttpServletRequest request, RequisitoForm form) throws NumberFormatException, SQLException, InconsistenceException 
    {
        
        try
		{
			m_requisitoValue = (RequisitoValue)m_easyprojectDelegate.retrieveById(new Integer(iId), RequisitoValue.class);
			m_sSystemaId = m_requisitoValue.getSistemaId().toString();
			
			if(m_requisitoValue != null)
			{			 
				form = setRequisitoForm(m_requisitoValue);								
			}
		}
		catch (GenericException e)
		{
			m_actionErrors.add(ActionErrors.GLOBAL_ERROR, new ActionError(e.getBundle()));
		}

		if(!m_actionErrors.isEmpty())
		{
			saveErrors(request, m_actionErrors);
			return retriveRequisitoBySystem(new Integer(m_sSystemaId), mapping, request, (RequisitoForm)form);
		}

		return mapping.findForward("requisitos");
    }

  
  /**
   * Método Responsável por setar um RequisitoForm apartir de um RequisitoValue
   */
	
	private RequisitoForm setRequisitoForm (RequisitoValue value)
	{
	    RequisitoForm form = new RequisitoForm();
	    
	    form.setDescricao(value.getDescricao());
	    form.setDescricaoRisco(value.getDescricaoRisco());
	    form.setId(value.getId());
	    form.setNome(value.getNome());
	    form.setPrioridade(value.getPrioridade());
	    form.setRisco(value.getRisco());
	    form.setSistema_Id(value.getSistemaId());
	    form.setStatus(value.getStatus());
	    form.setTipo(value.getTipo());
	    return form;
	}
	
	  /**
	 * Método responsável por criar uma nova instância RequisitoValue com os
	 * dados contidos no formulário.
	 * @param form Formulário que contém os dados preenchidos pelo usuário.
	 */
	private void setRequisitoValue(RequisitoForm form)
	{
		m_requisitoValue = new RequisitoValue();
		
		m_requisitoValue.setId(form.getId());
		m_requisitoValue.setNome(form.getNome());
		m_requisitoValue.setDescricao(form.getDescricao());
		m_requisitoValue.setDescricaoRisco(form.getDescricaoRisco());
		m_requisitoValue.setSistemaId(form.getSistema_Id());
		m_requisitoValue.setPrioridade(form.getPrioridade());
		m_requisitoValue.setRisco(form.getRisco());
		m_requisitoValue.setStatus(form.getStatus());
		m_requisitoValue.setTipo(form.getTipo());		
	}
	
	/**
     * @param System_Id
     * @return mapping.findForward("requisitosList");
     */
    private ActionForward retriveRequisitoBySystem(Integer System_Id, ActionMapping mapping, HttpServletRequest request, RequisitoForm requisitoForm) throws SQLException, InconsistenceException
    {           		    	
    	requisitoForm.setRequisitos((Collection)m_easyprojectDelegate.retriveRequisitoBySystemId(System_Id));          

		if(!m_actionErrors.isEmpty())
		{
			saveErrors(request, m_actionErrors);
			return mapping.findForward("requisitosList");
		}
        
   		
        return mapping.findForward("requisitosList");
    }
    
	/**
	 * Método responsável por inserir um novo registro na tabela REQUISITO.
	 * @param form Contém todos os campos do formulário da página. Os dados que serão inseridos na tabela REQUISITO.
	 * @param mapping Contém informações para mapear a requisição do usuário.
	 * @param request Mantém os dados do request do usuário.
	 * @return ActionForward Encaminha para a página que contém todos os registros da tabela REQUISITO.
	 * @throws InconsistenceException
	 * @throws SQLException
	 */
	private ActionForward insertRequisito(ActionForm form, ActionMapping mapping, HttpServletRequest request) throws SQLException, InconsistenceException
	{

	    //Integer iSystemId = form.getSistemaId();
	    RequisitoForm requisitoForm = (RequisitoForm)form;	
	    requisitoForm.setSistema_Id(new Integer(1));
	    setRequisitoValue(requisitoForm);
	   
		//Verifica se há algum erro com os dados do formulário.
		m_actionErrors = requisitoForm.validate(mapping, request);
		if(m_actionErrors.isEmpty())
		{
			try
			{
				m_easyprojectDelegate.addRegister(m_requisitoValue);
			}
			catch (GenericException e)
			{
				m_actionErrors.add(ActionErrors.GLOBAL_ERROR, new ActionError(e.getBundle()));
			}
		}

		//Remove o formulário da sessão
		if(!m_actionErrors.isEmpty())
		{
			saveErrors(request, m_actionErrors);
			return (mapping.findForward("erro"));
		}
		else
		{
			if (mapping.getAttribute() != null) 
			{
				if ("request".equals(mapping.getScope()))
				{
					request.removeAttribute(mapping.getAttribute());
					requisitoForm.reset();
				}
				else
				{
					request.getSession().removeAttribute(mapping.getAttribute());
					requisitoForm.reset();
				}				
			}
		}
	
		return retriveRequisitoBySystem(m_requisitoValue.getSistemaId(), mapping, request, (RequisitoForm)form);
	}


	/**
	 * Método responsável por atualizar um determinado registro na tabela REQUISITO através do campo ID
	 * @param form Contém os dados que serão atualizado na tabela sistemas
	 * @param mapping Contém informações para mapear a requisição do usuário.
	 * @param request Mantém os dados do request do usuário. 
	 * @return ActionForward Encaminha para a página que contém o formulário da tabela requisitos
	 */
	private ActionForward updateRequisito(ActionForm form, ActionMapping mapping, HttpServletRequest request)throws Exception
	{
	   	    	   
	    RequisitoForm requisitoForm = (RequisitoForm)form;
	    requisitoForm.setSistema_Id(new Integer(m_sSystemaId));
	    m_actionErrors = form.validate(mapping, request);
	    
	    
	    if(m_actionErrors.isEmpty())
	    {
	        try
	        {
	            setRequisitoValue(requisitoForm);
	            m_easyprojectDelegate.updateRegister(m_requisitoValue);
	            m_sSystemaId = m_requisitoValue.getSistemaId().toString();
	        }
	        catch (GenericException e)
	        {
	            m_actionErrors.add(ActionErrors.GLOBAL_ERROR, new ActionError(e.getBundle()));
	        }
	    }
	    
	    
	    if(!m_actionErrors.isEmpty())
	    {
	        saveErrors(request, m_actionErrors);
	        return (mapping.findForward("erro"));
	    }
	    else
	    {
	        requisitoForm.reset();
	        
	        return retriveRequisitoBySystem(new Integer(m_sSystemaId), mapping, request, requisitoForm);
	        
	    }		
	}

	/**
	 * Método responsável por deletar um determinado registro na tabela REQUISITO através do campo ID
	 * @param form do Requisito para manter o id de sistema
	 * @param id do requisito que se quer remover
	 * @param mapping Contém informações para mapear a requisição do usuário.
	 * @param request Mantém os dados do request do usuário. 
	 * @return manda para o método retriveRequisitoBySystem que irá retornar a requisitosLis.jsp
	 * @throws SQLException
	 * @throws InconsistenceException
	 */
	private ActionForward removeRequisito(RequisitoForm form, int id, ActionMapping mapping, HttpServletRequest request) throws SQLException, InconsistenceException
	{		
	    //Integer SystemId = form.getSistema_Id();
	    Integer SystemId = new Integer(1);
	    
		try
		{					
			m_easyprojectDelegate.removeRegister(new Integer(id),RequisitoValue.class);
		}
		catch (GenericException e)
		{
			m_actionErrors.add(ActionErrors.GLOBAL_ERROR, new ActionError(e.getBundle()));
		}
		
		if(!m_actionErrors.isEmpty())
		{
			saveErrors(request, m_actionErrors);
		}
		
		// retorna para a pagina que apresenta todos os registros da tabela Requisito
		form.reset();
		return retriveRequisitoBySystem(SystemId, mapping, request, (RequisitoForm)form);		
	}
}

ah o forum naum tah deixando eu postar o formulario tá falando que eu naum posso usar essas tags… hum mas é um formulário normal com 3 html:text, com 4 html:select e seus options, um botão cancela, um limpa, e 2 submit com logica de novo e alterar…

pow o jsp ta haki mas ficou umuito ruim pq eu tirei todas as tags td e tr e todos os simbolos <> pq ele naum tava deixando eu postar… se servir de algo…

				td colspan=&quot;2&quot;html&#58;errors/

								labelfont class=&quot;label&quot;Nome&#58; /font/label
	
								html&#58;text size=&quot;50&quot; property=&quot;nome&quot; value=&quot;Digite o nome do requisito&quot;
								/html&#58;text
							
								label class=&quot;label&quot;Tipo&#58; /label
	
								html&#58;select property=&quot;tipo&quot;
									html&#58;option value=&quot;null&quot;Tipo do Requisito/html&#58;option
									html&#58;option value=&quot;1&quot;&gt;Funcional/html&#58;option
									html&#58;option value=&quot;2&quot;&gt;Não Funcional/html&#58;option
								/html&#58;select
							
			

								label class=&quot;label&quot;Descrição&#58; /label
					html&#58;textarea rows=&quot;4&quot; cols=&quot;80&quot; property=&quot;descricao&quot;
								/html&#58;textarea

				
		
	
								label class=&quot;label&quot;Status&#58; /label
							
							td width=&quot;20%&quot; align=&quot;left&quot;
								html&#58;select property=&quot;status&quot;
									html&#58;option value=&quot;null&quot;Selecione um Status/html&#58;option
									html&#58;option value=&quot;1&quot;Proposto/html&#58;optio&gt;
									html&#58;option value=&quot;2&quot;Aprovado/html&#58;option
									html&#58;option value=&quot;3&quot;Futuro/html&#58;option
								/html&#58;select
					label class=&quot;label&quot; Prioridade&#58;  /label
							
								html&#58;select property=&quot;prioridade&quot;
									html&#58;option value=&quot;null&quot;&gt;Selecione uma Prioridade /html&#58;option
									html&#58;option value=&quot;1&quot; Alta /html&#58;option
									html&#58;option value=&quot;2&quot; Média /html&#58;option
									html&#58;option value=&quot;3&quot; Baixa /html&#58;option
								/html&#58;select

								label class=&quot;label&quot;&gt;Risco&#58; /label
	
								html&#58;select property=&quot;risco&quot;
									html&#58;option value=&quot;null&quot; Selecione um Risco /html&#58;option
									html&#58;option value=&quot;1&quot; Alto /html&#58;option
									html&#58;option value=&quot;2&quot; Médio /html&#58;option
									html&#58;option value=&quot;3&quot; Baixo/html&#58;option
								/html&#58;select
							
								label class=&quot;label&quot; Descrição Do Risco&#58; /label
						
								html&#58;textarea rows=&quot;4&quot; cols=&quot;80&quot; property=&quot;descricaoRisco&quot;
								/html&#58;textarea

							td width=&quot;30%&quot; colspan=&quot;2&quot; align=&quot;center&quot;
								html&#58;reset value=&quot;Limpar&quot; styleClass=&quot;label&quot; style=&quot;width&#58;80px;&quot;/								
														
								logic&#58;empty name=&quot;RequisitoForm&quot; property=&quot;id&quot;
			    					html&#58;submit value=&quot;Incluir&quot; property=&quot;Submit&quot; styleClass=&quot;label&quot; style=&quot;width&#58;80px;&quot;/
			  					/logic&#58;empty	
			  					
			  					logic&#58;notEmpty name=&quot;RequisitoForm&quot; property=&quot;id&quot;
			    					html&#58;submit value=&quot;Alterar&quot; property=&quot;Submit&quot; styleClass=&quot;label&quot; style=&quot;width&#58;80px;&quot;/
			  					/logic&#58;notEmpty							
							
							&quot;
								html&#58;cancel value=&quot;Cancelar&quot; styleClass=&quot;label&quot; style=&quot;width&#58;80px;&quot;/