2016-02-29 84 views
0

我在一个项目中,在我使用的支柱是第一次当我点击我的JSP页面中我收到的提交按钮下面的错误任何人都可以找到我这个错误转换字符串的BigDecimal

的例外:

javax.servlet.ServletException: BeanUtils.populate 
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495) 
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805) 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203) 
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) 
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

根源

javax.servlet.ServletException: BeanUtils.populate 
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495) 
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805) 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203) 
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) 
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

根源

java.lang.NumberFormatException 
java.math.BigDecimal.<init>(BigDecimal.java:534) 
java.math.BigDecimal.<init>(BigDecimal.java:728) 
org.apache.commons.beanutils.converters.BigDecimalConverter.convert(BigDecimalConverter.java:112) 
org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:428) 
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1004) 
org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811) 
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298) 
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493) 
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805) 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203) 
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) 
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

这是我的操作页面:

package it.gepo.cflow.tracking.viewcontroler; 

import it.gepo.cflow.tracking.dao.CtrkCheckListBean; 
import it.gepo.cflow.tracking.dao.CtrkCheckListDAO; 
import it.gepo.cflow.tracking.dao.CtrkCliClassiDAO; 
import it.gepo.cflow.tracking.dao.CtrkModuliIndiciBean; 
import it.gepo.cflow.tracking.dao.CtrkModuliIndiciDAO; 
import it.gepo.cflow.utility.UtilityCtrk; 
import it.gepo.utility.GepoUtility; 
import it.gepo.web.ConnectionFactory; 
import it.gepo.web.GepoUtente; 
import it.gepo.web.MyAction; 

import java.io.IOException; 
import java.math.BigDecimal; 

import java.sql.Connection; 

import java.sql.SQLException; 

import java.util.List; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

import javax.servlet.http.HttpSession; 

import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.action.ActionMapping; 
import org.apache.struts.action.ActionMessage; 
import org.apache.struts.action.ActionMessages; 
import org.apache.log4j.Logger; 

public class TrackingChecklistAction extends MyAction { 

    public static Logger logger = Logger 
      .getLogger(TrackingChecklistAction.class); 
    public static int righeTabella = 10; 
    public static int righeTabellaNew = 1; 
    public static boolean unRecordXPagina = false; 
    public static String nomeForm = "TrackingChecklistForm"; 

    public ActionForward execute(ActionMapping mapping, ActionForm form, 
      HttpServletRequest request, HttpServletResponse response) 
      throws IOException, ServletException { 
     logger.debug("execute"); 
     Connection conn = null; 
     HttpSession session = request.getSession(true); 
     GepoUtente gepoUtente = (GepoUtente) session.getAttribute("GepoUtente"); 
     String dataSourceName = gepoUtente.getDataSource(); 

     try { 

      conn = ConnectionFactory.getConnection(dataSourceName); 
      TrackingChecklistForm myForm = (TrackingChecklistForm) form; 
      if (mapping.getParameter().equals("visualizza")) { 
       return visualizza(mapping, myForm, request, response, session, 
         conn); 
      } else if (mapping.getParameter().equals("gestione")) { 
       return gestione(mapping, myForm, request, response, session, 
         conn); 
      } else { 
       throw new IllegalStateException(); 
      } 

     } catch (Exception e) { 
      logger.info("errore " + e.getMessage()); 
      ActionMessages errors = new ActionMessages(); 
      ActionMessage error = new ActionMessage("errore.generico", 
        e.getMessage(), e); 
      errors.add(ActionMessages.GLOBAL_MESSAGE, error); 
      saveErrors(request, errors); 
      return mapping.getInputForward(); 
     } finally { 
      try { 
       conn.close(); 
      } catch (Exception e) { 
       throw new ServletException(e.getMessage()); 
      } 
     } 
    } 

    private ActionForward visualizza(ActionMapping mapping, 
      TrackingChecklistForm myForm, HttpServletRequest request, 
      HttpServletResponse response, HttpSession session, Connection conn) 
      throws IOException, ServletException, Exception { 

     logger.debug("visualizza"); 

     List lista = null; 
     CtrkCheckListDAO dao = null; 

     // 
     // Primo Ingresso 
     // 
     if (myForm.getUtilEseguiRicerca() == null) { 
      myForm.setUtilRigaInizio(0); 
      myForm.setUtilRigheTabella(righeTabella); 
      myForm.setUtilRigheTabellaNew(righeTabellaNew); 
      myForm.setUtilImpostaRicerca(Boolean.FALSE); 
      myForm.setUtilEseguiRicerca(Boolean.TRUE); 
      myForm.setUtilFormModificata(Boolean.FALSE); 
     } 

     if (myForm.getUtilEseguiRicerca().booleanValue()) { 

      lista = loadByWhere(conn, myForm, session); 
      myForm.setListaDati(lista); 
      myForm.setUtilEseguiRicerca(Boolean.TRUE); 
      myForm.setUtilRigaInizio(0); 

     } else { 
      dao = new CtrkCheckListDAO(); 
      lista = dao.loadAll(conn); 

      myForm.setListaDati(lista); 
      myForm.setUtilEseguiRicerca(Boolean.TRUE); 
      myForm.setUtilRigaInizio(0); 

     } 

     myForm.setListaDati(lista); 

     // 
     // Controllo Rientro da eventuale Elimina 
     // 
     if (myForm.getUtilRigheTabella() != 0) { 
      if (myForm.getUtilRigaInizio() > myForm.getNumRecord() - 1) { 
       myForm.setUtilRigaInizio(((myForm.getNumRecord() - righeTabella) > 0) ? myForm 
         .getNumRecord() - righeTabella 
         : 0); 
      } 
     } 

     // 
     // Controlli da eseguire se visualizzo un record per pagina 
     // 
     if (unRecordXPagina) { 
      if (myForm.getNumRecord() == 0) { 
       myForm.setUtilRigaInizio(0); 
       myForm.setUtilRigheTabella(0); 
       myForm.setUtilRigheTabellaNew(righeTabellaNew); 
      } else { 
       myForm.setUtilRigheTabella(righeTabella); 
       myForm.setUtilRigheTabellaNew(0); 
      } 
     } 

     myForm.setListaDatiNew(myForm.getUtilRigheTabellaNew()); 
     myForm.setUtilFormModificata(Boolean.FALSE); 

     return mapping.findForward("success"); 
    } 

    private List loadByWhere(Connection conn, TrackingChecklistForm myForm, 
      HttpSession session) throws Exception { 

     String id_modulo =(String) ((myForm.getN_id_modulo() == null) ? "": myForm.getN_id_modulo()); 
     String domanda = (myForm.getC_domanda() == null) ? "" : myForm.getC_domanda(); 
     String flag_attivo = (myForm.getC_flag_attivo() == null) ? "" : myForm.getC_flag_attivo(); 
     String data_inserimento = (myForm.getD_data_inserimento() == null) ? "": myForm.getD_data_inserimento(); 
     String data_disattivazione = (myForm.getD_data_disattivazione() == null) ? "": myForm.getD_data_disattivazione(); 

     String where = ""; 
     String ctlWhere = ""; 
     Object[] elementi = new Object[0]; 

     if (!id_modulo.equals("")) { 
      where = where + ctlWhere + "ID_MODULO = '" + id_modulo + "'"; 
      ctlWhere = " AND "; 
     } 

     if (!domanda.equals("")) { 

      where = where + ctlWhere + "DOMANDA = '" + domanda + "'"; 
      ctlWhere = " AND "; 
     } 

     if (!flag_attivo.equals("")) { 
      where = where + ctlWhere + "FLAG_ATTIVO = '" + flag_attivo + "'"; 
      ctlWhere = " AND "; 
     } 
     if (!data_inserimento.equals("")) { 
      where = where + ctlWhere + "DATA_INSERIMENTO = '" 
        + data_inserimento + "'"; 
      ctlWhere = " AND "; 
     } 

     if (!data_disattivazione.equals("")) { 

      where = where + ctlWhere + "DATA_DISATTIVAZIONE = '" 
        + data_disattivazione + "'"; 
      ctlWhere = " AND "; 
     } 

     logger.debug("where : " + where); 

     if (!ctlWhere.equals("")) { 
      CtrkCheckListDAO dao = new CtrkCheckListDAO(); 
      String orderBy = ""; 
      return dao.loadByWhere(conn, where, elementi, orderBy); 
     } else { 
      return null; 
     } 
    } 

    private ActionForward gestione(ActionMapping mapping, 
      TrackingChecklistForm myForm, HttpServletRequest request, 
      HttpServletResponse response, HttpSession session, Connection conn) 
      throws IOException, ServletException, Exception { 

     logger.debug("gestione"); 

     String action = request.getParameter("c_request"); 
     // 
     // Controllo Richiesta Immissione/Aggiungi Righe Immissione 
     // 
     if (unRecordXPagina) { 
      if (action.equalsIgnoreCase("Immissione")) { 
       myForm.setUtilEseguiRicerca(Boolean.FALSE); 
       return mapping.findForward("success"); 
      } 
     } else { 
      if (action.equalsIgnoreCase("Aggiungi Righe Immissione")) { 
       myForm.addListaDatiNew(5); 
       myForm.setUtilRigheTabellaNew(myForm.getUtilRigheTabellaNew() + 5); 
      } 
     } 

     // 
     // Controllo Richiesta Aggiungi Righe Immissione 
     // 
     if (!unRecordXPagina) { 
      if (action.equalsIgnoreCase("Aggiungi Righe Immissione")) { 
       return mapping.getInputForward(); 
      } 
     } 

     // 
     // Controllo Richiesta Uscita 
     // 
     if (action.equalsIgnoreCase("Uscita")) { 
      session.removeAttribute(nomeForm); 
      GepoUtente utente = (GepoUtente) session.getAttribute("GepoUtente"); 
      response.sendRedirect(utente.getReturnURL()); 
      return null; 
     } 

     // 
     // Controllo Richiesta Esegui Ricerca 
     // 
     if (action.equalsIgnoreCase("Esegui Ricerca")) { 
      try { 
       validateRicerca(conn, myForm); 
       return mapping.findForward("success"); 
      } catch (Exception e) { 
       logger.debug(e.getMessage()); 
       ActionMessages errors = new ActionMessages(); 
       ActionMessage error = new ActionMessage("errore.generico", 
         e.getMessage(), e); 
       errors.add(ActionMessages.GLOBAL_MESSAGE, error); 
       saveErrors(request, errors); 
       return mapping.getInputForward(); 
      } 
     } 

     // 
     // Validate Records 
     // 
     if (!validate(conn, session, myForm)) { 
      return mapping.getInputForward(); 
     } 

     // 
     // Aggiornamento Tabelle 
     // 
     if (!aggiorna(conn, myForm)) { 
      try { 
       conn.rollback(); 
      } catch (SQLException e) { 
       throw new Exception("Errore ROLLBACK : " + e.getMessage()); 
      } 
      return mapping.getInputForward(); 

     } else { 
      try { 
       conn.commit(); 
      } catch (SQLException e) { 
       throw new Exception("Errore COMMIT : " + e.getMessage()); 
      } 
     } 

     // 
     // Aggiornamento Riuscito 
     // Imposto default per righe immissione 
     // 
     if (!unRecordXPagina) { 
      myForm.setUtilRigheTabellaNew(righeTabellaNew); 
     } 

     // 
     // Controllo Richiesta Successivo/Precedente 
     // 
     if (action.equalsIgnoreCase("Successivo")) { 
      myForm.setUtilRigaInizio(myForm.getUtilRigaInizio() 
        + myForm.getUtilRigheTabella()); 
      return mapping.getInputForward(); 
     } 

     if (action.equalsIgnoreCase("Precedente")) { 
      myForm.setUtilRigaInizio(((myForm.getUtilRigaInizio() - myForm 
        .getUtilRigheTabella()) > 0) ? myForm.getUtilRigaInizio() 
        - myForm.getUtilRigheTabella() : 0); 
      return mapping.getInputForward(); 
     } 

     return mapping.findForward("success"); 

    } 

    private void validateRicerca(Connection conn, TrackingChecklistForm myForm) 
      throws Exception { 

     String n_id_modulo = (String) ((myForm.getN_id_modulo() == null) ? "" 
       : myForm.getN_id_modulo()); 
     String c_domanda = (myForm.getC_domanda() == null) ? "" : myForm 
       .getC_domanda(); 
     String c_flag_attivo = (myForm.getC_flag_attivo() == null) ? "" 
       : myForm.getC_flag_attivo(); 
     String d_data_inserimento = (myForm.getD_data_inserimento() == null) ? "" 
       : myForm.getD_data_inserimento(); 
     String d_data_disattivazione = (myForm.getD_data_disattivazione() == null) ? "" 
       : myForm.getD_data_disattivazione(); 

     if (n_id_modulo.equals("") && c_domanda.equals("") 
       && c_flag_attivo.equals("") && d_data_inserimento.equals("") 
       && d_data_disattivazione.equals("")) { 
      myForm.setUtilEseguiRicerca(Boolean.FALSE); 
     } else { 
      myForm.setUtilEseguiRicerca(Boolean.TRUE); 
     } 

     myForm.setUtilImpostaRicerca(Boolean.FALSE); 
     myForm.setUtilRigaInizio(0); 

    } 

    private boolean validate(Connection conn, HttpSession session, 
      TrackingChecklistForm myForm) throws Exception { 

     boolean validato = true; 
     TrackingChecklistRecord[] rec = myForm.getListaDati(); 
     TrackingChecklistRecord[] recNew = myForm.getListaDatiNew(); 

     for (int x = 0; x < myForm.getUtilRigheTabellaNew(); x++) { 

      if (recNew[x].isModificato()) { 
       if (!validateRecord(conn, recNew[x])) { 
        validato = false; 
       } 
       myForm.setDatiNew(recNew[x], x); 
       myForm.setUtilFormModificata(Boolean.TRUE); 
      } 

     } 

     int begin = myForm.getUtilRigaInizio(); 
     int end = (begin + myForm.getUtilRigheTabella()) > rec.length ? rec.length 
       : (begin + myForm.getUtilRigheTabella()); 

     for (int x = begin; x < end; x++) { 

      if (rec[x].isModificato()) { 
       if (!validateRecord(conn, rec[x])) { 
        validato = false; 
       } 
       myForm.setDati(rec[x], x); 
       myForm.setUtilFormModificata(Boolean.TRUE); 
      } 

     } 
     return validato; 
    } 

    private boolean validateRecord(Connection conn, TrackingChecklistRecord rec) throws Exception { 

     UtilityCtrk rowExist = new UtilityCtrk(); 
     CtrkCheckListBean vo = new CtrkCheckListBean(); 
     CtrkCheckListDAO dao = new CtrkCheckListDAO(); 
     // 
     // Control Id modulo 
     // 
     if (rec.getN_id_modulo().equals("")) { 
      rec.setC_errore("Inserire ID MODULO"); 
      return false; 
     } 
     // 
     // Control Domanda 
     // 
     if (rec.getC_domanda().equals("")) { 
      rec.setC_errore("Inserire DOMANDA"); 
      return false; 
     } 
     // 
     // Control Flag attivo 
     // 
     if (rec.getC_flag_attivo().equals("")) { 
      rec.setC_errore("Inserire FLAG ATTIVO"); 
      return false; 
     } 
     vo.setIdModulo(new BigDecimal(rec.getN_id_modulo())); 
     vo.setDomanda(rec.getC_domanda()); 
     vo.setFlagAttivo(rec.getC_flag_attivo()); 

     vo.setId(new BigDecimal(GepoUtility.getSequenceNext(conn, 
       "SEQ_ID_TRACCIATURA"))); 

     if (dao.exist(conn, vo)) { 
      rec.setC_errore("Record già presente!"); 
      return false; 
     } else { 
      return true; 
     } 
    } 

    private boolean aggiorna(Connection conn, TrackingChecklistForm myForm) 
      throws Exception { 

     boolean aggiornato = true; 

     TrackingChecklistRecord[] rec = myForm.getListaDati(); 
     TrackingChecklistRecord[] recNew = myForm.getListaDatiNew(); 

     int begin = myForm.getUtilRigaInizio(); 
     int end = (begin + myForm.getUtilRigheTabella()) > rec.length ? rec.length 
       : (begin + myForm.getUtilRigheTabella()); 

     // 
     // Loop per DELETE 
     // 
     for (int x = begin; x < end; x++) { 

      try { 

       CtrkCheckListBean vo = new CtrkCheckListBean(); 
       CtrkCheckListDAO dao = new CtrkCheckListDAO(); 

       if (rec[x].isC_delete()) { 
        vo.setRowid(rec[x].getR_rowid()); 
        dao.delete(conn, vo); 
       } 

      } catch (Exception e) { 
       aggiornato = false; 
       if (unRecordXPagina) { 
        rec[x].setC_delete(false); 
       } 
       rec[x].setC_errore(e.getMessage()); 
       myForm.setDati(rec[x], x); 
      } 

     } 

     // 
     // Loop per INSERT 
     // 
     for (int x = 0; x < myForm.getUtilRigheTabellaNew(); x++) { 

      try { 

       CtrkCheckListBean vo = new CtrkCheckListBean(); 
       CtrkCheckListBean voOld = new CtrkCheckListBean(); 
       CtrkCheckListDAO dao = new CtrkCheckListDAO(); 

       vo.setIdModulo(string2BigDecimal(recNew[x].getN_id_modulo())); 
       voOld.setIdModulo(string2BigDecimal(recNew[x] 
         .getN_id_moduloOld())); 
       vo.setDomanda(recNew[x].getC_domanda()); 
       voOld.setDomanda(recNew[x].getC_domandaOld()); 
       vo.setFlagAttivo(recNew[x].getC_flag_attivo()); 
       voOld.setFlagAttivo(recNew[x].getC_flag_attivoOld()); 
       vo.setDataInserimento(string2Date(recNew[x] 
         .getD_data_inserimento())); 
       voOld.setDataInserimento(string2Date(recNew[x] 
         .getD_data_inserimentoOld())); 
       vo.setDataDisattivazione(string2Date(recNew[x] 
         .getD_data_disattivazione())); 
       voOld.setDataDisattivazione(string2Date(recNew[x] 
         .getD_data_disattivazioneOld())); 

       if (!vo.hasEqualMapping(voOld)) { 

        dao.create(conn, vo); 
        logger.debug("Create " + vo); 
       } 

      } catch (Exception e) { 
       aggiornato = false; 
       recNew[x].setC_errore(e.getMessage()); 
       myForm.setDatiNew(rec[x], x); 
      } 

     } 

     // 
     // Loop per UPDATE 
     // 
     for (int x = begin; x < end; x++) { 

      try { 

       if (!rec[x].isC_delete()) { 

        CtrkCheckListBean vo = new CtrkCheckListBean(); 
        CtrkCheckListBean voOld = new CtrkCheckListBean(); 
        CtrkCheckListDAO dao = new CtrkCheckListDAO(); 
        vo.setRowid(rec[x].getR_rowid()); 
        voOld.setRowid(rec[x].getR_rowid()); 
        vo.setId(string2BigDecimal(rec[x].getN_id())); 
        voOld.setId(string2BigDecimal(rec[x].getN_idOld())); 
        vo.setIdModulo(string2BigDecimal(rec[x].getN_id_modulo())); 
        voOld.setIdModulo(string2BigDecimal(rec[x] 
          .getN_id_moduloOld())); 
        vo.setDomanda(rec[x].getC_domanda()); 
        voOld.setDomanda(rec[x].getC_domandaOld()); 
        vo.setFlagAttivo(rec[x].getC_flag_attivo()); 
        voOld.setFlagAttivo(rec[x].getC_flag_attivoOld()); 
        vo.setDataInserimento(string2Date(rec[x] 
          .getD_data_inserimento())); 
        voOld.setDataInserimento(string2Date(rec[x] 
          .getD_data_inserimentoOld())); 
        vo.setDataDisattivazione(string2Date(rec[x] 
          .getD_data_disattivazione())); 
        voOld.setDataDisattivazione(string2Date(rec[x] 
          .getD_data_disattivazioneOld())); 
        if (!vo.hasEqualMapping(voOld)) { 
         dao.save(conn, vo); 
        } 
       } 
      } catch (Exception e) { 
       aggiornato = false; 
       rec[x].setC_errore(e.getMessage()); 
       myForm.setDati(rec[x], x); 
      } 
     } 
     return aggiornato; 
    } 
} 
+1

邮政相关的JSP代码并只显示相关的动作类的方法,而不是整个动作类。 –

+1

发布相关的Java代码。您的表单的属性无法填充。 –

回答

1

有可能是一个方法,通过异常。还有一些其他原因是在这里下载。我希望这可以帮助

  1. 标记的action属性必须完全匹配struts-config.xml文件中动作定义的路径属性。这就是Struts如何将ActionForm bean与操作相关联。
  2. 当您指定了标签中不存在的表单名称时,通常会发生此错误。例如,您指定了并且'myForm'不是struts-config文件中与myAction关联的表单的名称
  3. 当Struts无法将HTML表单中的数据映射到ActionForm中的属性时,您会收到此消息豆。确保你的bean上的每个属性都是一个String或一个布尔值。你有任何类型java.util.Date或其他物件的属性?这可能会导致此错误。同时检查你的每个属性都有公共的getter和setter。

这个网站,你可以检查:

http://www.coderanch.com/t/53114/Struts/ServletException-BeanUtils-populate

http://javaexceptions1.blogspot.com/2009/08/javaxservletservletexception.html