Fala galera,
tenho um formulário com alguns campos, quando não passa na validação feita na action e adiciono mensagem de erro via addActionError() mensagem de erro aparece normalmente e retorna para a página especificada no struts.xml o problema ocorre quando eu tento fazer um novo submit, ocorre um erro inesperado conforme mostra a seguir:
Ocorreu um erro interno. Tente novamente em alguns minutos.
Caso o erro persista, favor entrar em contato com o analista responsável e informar o código do erro: "exception.requestId".
Mensagem:
No result defined for action br.com.bradseg.siad.imagemanalisedocumento.hphm.anexararquivo.action.AnexarArquivoAction$$EnhancerByCGLIB$$7d557a3c and result input
Stacktrace:
No result defined for action br.com.bradseg.siad.imagemanalisedocumento.hphm.anexararquivo.action.AnexarArquivoAction$$EnhancerByCGLIB$$7d557a3c and result input
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:375)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at br.com.bradseg.bsad.framework.web.struts.support.RedirectMessageInterceptor.intercept(RedirectMessageInterceptor.java:34)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:88)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at ch.qos.logback.classic.helpers.MDCInsertingServletFilter.doFilter(MDCInsertingServletFilter.java:51)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:997)
at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:1062)
at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:982)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)
=============================== // ===============================
Minha jsp:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page
language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<script type="text/javascript" src="<s:url value='/includes/js/anexarArquivo.js'/>"></script>
<div class="main">
<s:if test="hasActionErrors()">
<s:iterator value="actionErrors">
<div id="errorMessages" class="error">
<s:property />
</div>
</s:iterator>
</s:if>
<span class="titulo">Anexar Arquivos</span>
<br /><br /><br />
<s:form action="anexarHm" method="POST" enctype="multipart/form-data">
<table class="tabela_interna" width="100%">
<tbody>
<tr>
<td width="250px" class="td_label"><label>Número do Protocolo:</label><span class="obrigatorio">*</span></td>
<td class="td_dados"><s:textfield id="numProtocolo" name="anexarArquivoDTO.numProtocolo" maxlength="12" cssClass="field_numeric"/></td>
</tr>
<tr>
<td class="td_label"><label>Número da Guia:</label><span class="obrigatorio">*</span></td>
<td class="td_dados"><s:textfield id="numGuia" name="anexarArquivoDTO.numGuia" maxlength="20" cssClass="field_numeric"/></td>
</tr>
<tr>
<td class="td_label"><label>Senha:</label><span class="obrigatorio">*</span></td>
<td class="td_dados"><s:textfield id="senha" name="anexarArquivoDTO.senha" maxlength="10" cssClass="field_alfa"/></td>
</tr>
<tr>
<td class="td_label"><label>Tipo Documento:</label><span class="obrigatorio">*</span></td>
<td class="td_dados">
<s:select id="tipoDocumento"
value="anexarArquivoDTO.tipoDocumento"
name="anexarArquivoDTO.tipoDocumento"
headerKey=""
headerValue="Selecione"
list="#{'1':'Guia de Solicitação de Internação',
'2':'Fatura do Prestador',
'3':'Relatório Médico',
'4':'Notas Fiscais',
'5':'RAH Manual',
'6':'Folha de Sala Cirúrgica',
'7':'Solicitação de OPME',
'8':'Laudo Imagem',
'9':'Outros'}"/>
</td>
</tr>
<tr>
<td class="td_label"><label>Arquivo:</label><span class="obrigatorio">*</span></td>
<td class="td_dados"><s:file id="anexo" name="anexarArquivoDTO.arquivo" size="80" /></td>
</tr>
</tbody>
</table>
<div align="left"><span class="obrigatorio">Os campos marcados com * são obrigatórios.</span></div>
<br /><br />
<div class="centralizado">
<button type="submit" style="width: 80px">Anexar</button>
</div>
<br /><br />
</s:form>
<s:if test="%{!listaAnexarArquivoDTO.isEmpty()}">
<table width="100%" class="tabela_resultado">
<thead>
<tr>
<td class="cabecalhoColuna" width="60%"><label>Arquivos</label></td>
<td class="cabecalhoColuna" width="30%"><label>Tipo Documento</label></td>
<td class="cabecalhoColuna" width="10%"><label>Ações</label></td>
</tr>
</thead>
<tbody>
<s:iterator value="listaAnexarArquivoDTO" var="anexo">
<tr>
<td class="colunaTabela direitaTexto"><s:property value="arquivoFileName"/></td>
<td class="colunaTabela direitaTexto"><s:property value="tipoDocumento"/></td>
<td class="colunaTabela centroTexto">
<s:url id="excluir" action="excluirAnexoHm.do">
<s:param name="anexarArquivoDTO.arquivoFileName" value="arquivoFileName"/>
</s:url>
<s:a href="%{excluir}" method="POST"
name='linkAcao'
title="Clique para excluir o anexo.">
<img src="<s:url value="/includes/css/images/exclude.jpg"/>" width="18" height="18"/>
</s:a>
</td>
</tr>
</s:iterator>
</tbody>
</table>
<br /><br />
<s:form action="enviarAnexoHm" method="post">
<div class="centralizado">
<s:submit type="button" cssStyle="width: 80px">Enviar</s:submit>
</div>
</s:form>
</s:if>
</div>
</body>
</html>
Minha Action:
@Controller
@Scope("session")
public class AnexarArquivoAction extends ActionSupport {
private AnexarArquivoDTO anexarArquivoDTO;
private List<AnexarArquivoDTO> listaAnexarArquivoDTO;
public String anexarHm() {
String retorno = Action.SUCCESS;
try {
if (this.validarAnexarHm()) {
this.getListaAnexarArquivoDTO().add(anexarArquivoDTO.copy());
anexarArquivoDTO = new AnexarArquivoDTO();
addActionMessage(getText("msg.sucesso.anexar.arquivo.inclusao"));
} else {
retorno = Action.INPUT;
}
} catch (Exception e) {
LOGGER.error("Erro ao anexar:", e);
addActionError(getText("msg.erro.anexar.arquivo"));
retorno = Action.ERROR;
}
return retorno;
}
private boolean validarAnexarHm() {
boolean retorno = true;
if (null != this.getAnexarArquivoDTO()) {
/*validacao de campos obrigatorios*/
if (!validarCamposObrigatoriosHm()) {
addActionError(getText("msg.erro.global.campos.obrigatorios.nao.preenchidos"));
retorno = false;
}
}
return retorno;
}
// seters e getters
struts.xml:
<package name="anexararquivo" namespace="/anexararquivo" extends="bsad-default">
<action name="anexarHm" class="anexarArquivoAction" method="anexarHm">
<result name="success">/WEB-INF/pages/pt_BR/anexararquivo/anexararquivo_hm.jsp</result>
<result name="input">/WEB-INF/pages/pt_BR/anexararquivo/anexararquivo_hm.jsp</result>
</action>
</package>
Esse problema só ocorre quando eu adiciono mensagem de erro, se for mensagem de sucesso ou se não tiver mensagem nenhuma continua funcionando normalmente.
Agradeço desde já.