java.lang.NoSuchMethodException struts servlet

时间:2016-09-21 15:16:31

标签: java servlets struts2

我对response.sendRedirect有一些问题,主要问题是我已经配置了struts.xml和responseServlet,但我可以调用一个类的方法而不是其他方法。

我可以打电话

response.sendRedirect是( “inicioRemesa600.action”);

但不能

response.sendRedirect是( “xmlFirmaRemesa600.action”);

两个方法都存在于同一个类中,并返回一个带有url bean的String

任何人都知道为什么??

    public void signOK(FirmaInfoViafirma fiv, HttpServletRequest request,
        HttpServletResponse response) {

    log.info(Claves.CLAVE_LOG_SERVLET_VIAFIRMA_INICIO + "signOK");
    // Recupera el context-param que verificará o no que la firma corresponda con la
    // personalidad que figura como presentante del tramite:
    String comprobarFirmante = request.getSession().getServletContext().getInitParameter("comprobarFirmante");
    log.info(Claves.CLAVE_LOG_CONTEXT_PARAM + "comprobarFirmante: " + comprobarFirmante);
    ViafirmaClient viafirmaClient=(ViafirmaClient)request.getSession().getServletContext().
        getAttribute("viafirmaClient");

    // Recupera el valor del atributo de request tipoMensajeFirmado 
    // para saber si lo que se ha firmado es un rm o un dpr:
    String tipoMensajeFirmado=request.getSession().getAttribute("tipoMensajeFirmado").toString();
    Integer modeloFirmado =(Integer)request.getSession().getAttribute("modeloFirmado");
    request.getSession().setAttribute("tipoMensajeFirmado", null);
    // Comprobación para firmar un XML de pago y presentacion de una remesa de Castilla y León
    if(tipoMensajeFirmado!=null&&tipoMensajeFirmado.equals("documentacionEscritura")){
        try{
            // Comprueba que se ha firmado con un certificado cuyo nif coincide
            // con el presentante del trámite:
            if(comprobarFirmante.equalsIgnoreCase("si")){
                String nifPresentante = (String) request.getSession().getAttribute("nifPresentanteTramite");
                // Recupera el nif del certificado de las dos formas posibles:
                String nifCertificadoFirmanteMapa = fiv.getProperties().get("numberIdResponsable");
                String nifCertificadoFirmantePropiedad = fiv.getNumberUserId();
                String nifCertificadoFirmante = null;
                // Si la propiedad numberIdResponsable tiene el nif:
                if(nifCertificadoFirmanteMapa != null && !nifCertificadoFirmanteMapa.equals("")){
                    nifCertificadoFirmante = nifCertificadoFirmanteMapa;
                // Si la propiedad numberUserId tiene el nif:
                }else if(nifCertificadoFirmantePropiedad != null && !nifCertificadoFirmantePropiedad.equals("")){
                    nifCertificadoFirmante = nifCertificadoFirmantePropiedad;
                }
                // Si el nifCertificadoFirmante no tiene valor, no se ha recuperado el nif del certificado
                // de ninguna de las dos formas posibles:
                if(nifCertificadoFirmante == null){
                    request.getSession().setAttribute("mensajeError","No se ha podido recuperar el nif " +
                            "del certificado con el que se ha firmado. No se ha podido comprobar que presentante " + 
                            " y firmante son la misma persona. Cancelado el envío.");
                    log.info(Claves.CLAVE_LOG_SERVLET_VIAFIRMA_FIN + "signOK");
                    response.sendRedirect("discriminarError.action");
                    return;
                }
                if(!nifPresentante.equalsIgnoreCase(nifCertificadoFirmante)){
                    request.getSession().setAttribute("mensajeError","Se ha cancelado el envío. " +
                            "La firma de la documentación debe correr a cargo de la personalidad que figura " +
                    "como presentante del trámite. El nif de la persona que consta como presentante es " +
                        nifPresentante + " y el nif que consta en el certificado con el que se ha intentado firmar es " +
                        nifCertificadoFirmante);
                    log.info(Claves.CLAVE_LOG_SERVLET_VIAFIRMA_FIN + "signOK");
                    response.sendRedirect("discriminarError.action");
                    return;
                }
            }
            String idFirma=fiv.getSignId();
            // Pone en sesión la firma y el timestamp:
            request.getSession().setAttribute("firmaRemesaBytes",XmlBuilderSupportUtils.getCMSSignatureWithOutTimeStampBytes(idFirma));
            request.getSession().setAttribute("selloRemesaBytes",XmlBuilderSupportUtils.getTimeStampFromCMSbytes(idFirma));
            log.info(Claves.CLAVE_LOG_SERVLET_VIAFIRMA_FIN + "signOK");
            response.sendRedirect("xmlFirmaRemesa600.action");

1 个答案:

答案 0 :(得分:0)

好的,问题是我有一个私有方法,你需要一个send.redirect的公共方法