-2
私はresponse.sendRedirectにいくつかの問題がありますが、主な問題はstruts.xmlとresponseServletを設定していることですが、クラスのメソッドを呼び出すことはできますが、java.lang.NoSuchMethodException strutsサーブレット
私は
response.sendRedirect( "inicioRemesa600.action")を呼び出すことができます。
しかしできない
response.sendRedirect( "xmlFirmaRemesa600.action")。
どちらのメソッドは、同じクラスに存在し、URL豆と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");
望ましい行動のためのパブリックメソッドが必要だった - > response.sendRedirect( "xmlFirmaRemesa600.action ");先に述べたように、クラスの他のメソッドにリダイレクトできますが、xmlFirma()にはリダイレクトできません。 – AMB