我正在使用Spring Webflow进行流程,但是在应用程序保存数据的最后一步中,有时会生成下一个异常:
主要问题是我在本地环境中无法生成此错误。你能告诉我一些关于这件事的建议吗?谢谢:))
2014-01-20 10:30:59,662 [错误] [EceetWebFilter.java:45]错误org.springframework.web.util.NestedServletException:Request 处理失败;嵌套异常是 org.springframework.webflow.engine.FlowInputMappingException:错误 在启动时的输入映射期间发生 'inmueble / ediciondatosbasicos'流程; errors = [[RequiredError @ 2f32178b code ='required',error = true,errorCause = [null],originalValue = [null],mappedValue = [null]]] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) 〜[spring-webmvc-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 〜[spring-webmvc-3.0.5.RELEASE.jar:3.0.5.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 〜[servlet-api.jar!/:5.1.0.GA(build:SVNTag = JBoss_5_1_0_GA date = 200905221053)] at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 〜[servlet-api.jar!/:5.1.0.GA(build:SVNTag = JBoss_5_1_0_GA date = 200905221053)] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
这是数据模型映射
的Web Flow视图<body>
<div id="contenedorppal_publicar">
<div id="publicar_contppal">
<div class="clear"></div>
<form:form modelAttribute="publicacion" enctype="application/x-www-form-urlencoded; charset=ISO-8859-1" onsubmit="return validateInputs( this );" action="${flowExecutionUrl}&_eventId=continuar" method="post">
<form:hidden path="idSector"/>
<form:hidden path="nombreCiudadGeo"/>
<form:hidden path="direccionGeo"/>
<form:hidden path="zonaGeo"/>
<form:hidden path="sectorGeo"/>
<form:hidden path="barrioGeo"/>
<form:hidden path="coordenada"/>
<form:hidden path="caracteristicasGenerales"/>
<input type="hidden" value="${publicacion.idInmueble}" id="idInmueble">
<form:hidden path="caracteristicasEspecificas"/>
<div class="publicar_cont_registrorr" id="divLocalizacionInmueble">
<div class="tooltip"></div>
<div class="publicar_registror">
<form:errors path="caracteristicasGenerales" cssClass="errorPublicacion" htmlEscape="false"/>
<div class="clear"></div>
<h2 id="headerLocalizacionInmueble">» Localización del inmueble</h2>
<p>Ingrese la siguiente información para publicar su propiedad en metrocuadrado.com. Los datos con <b class="publicar_asterisco_popup">*</b> son obligatorios</p>
<div class="publicar_filaform" id="divCategoriaInmueble">
<form:label path="categoriaInmueble" title="Categoría Inmueble">Categoría Inmueble</form:label>
<form:select path="categoriaInmueble" items="${categoriasInmueble}" itemLabel="label" itemValue="id" id="ddlCategoriaInmueble" disabled="true" onchange="javascript:setControlPack( this.value )"/>
<span class="publicar_asterisco">*</span>
<form:errors path="categoriaInmueble" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divDireccion">
<form:label path="direccion" title="Dirección del inmueble">Dirección</form:label>
<form:input path="direccion" id="direccion" onkeypress="return validateAlphaNumericSpecial(event)" readonly="true" maxlength="150" /><span class="publicar_asterisco"> *</span>
<form:errors path="direccion" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divDepartamento">
<label for="idRegion" title="Nombre del departamento">Departamento</label>
<form:select path="idRegion" items="${regiones}" itemValue="id" itemLabel="label" disabled="true" onchange="javascript:traerCiudadesXRegion();" /><span class="publicar_asterisco">*</span>
<form:errors path="idRegion" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divCiudad">
<label for="idCiudad" title="Nombre de la ciudad">Ciudad</label>
<form:select path="idCiudad" disabled="true" items="${ciudades}" itemValue="id" itemLabel="label"/><span class="publicar_asterisco">*</span>
<form:errors path="idCiudad" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divTipoNegocio">
<form:label path="idTipoNegocio" title="Tipo de Negocio">Tipo de Negocio</form:label>
<form:select path="idTipoNegocio" items="${tiposNegocio}" itemLabel="label" itemValue="id" onchange="mostrarCaracteristicasGenerales()"/>
<span class="publicar_asterisco">*</span>
<form:errors path="idTipoNegocio" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divTipoInmueble">
<form:label path="idTipoInmueble" title="Tipo del inmueble">Tipo del inmueble</form:label>
<form:select path="idTipoInmueble" items="${tiposInmueble}" itemLabel="label" itemValue="id" disabled="true" onchange="setTipoInmuebleControlPack(this.value);mostrarCaracteristicasGenerales()"/> <span class="publicar_asterisco">*</span>
<form:errors path="idTipoInmueble" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divComentarios">
<form:label path="comentario" title="Descripción">Descripción</form:label>
<form:textarea path="comentario" onkeydown="return validarCTRL(event)" oncontextmenu="return false" onkeypress="validateMaxLenght( this, 500 );return validateRegExp( event, /^[a-zA-ZñÑ-áéíóú\/\,\.\ ]$/ )" style="height: 130px;" /><b class="publicar_asterisco_popup">*</b>
<form:errors path="comentario" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
<div class="clear"></div>
</div>
<div class="publicar_filaform" id="divTiempoPublicacion">
<label for="idTiempoPublicacion" title="Nombre de la ciudad">Tiempo de publicación</label>
<c:if test="${publicacion.estaPublicado eq 'S' }">
<form:select path="idTiempoPublicacion" disabled="true" items="${tiempos}" itemValue="id" itemLabel="label"/><span class="publicar_asterisco">*</span>
</c:if>
<c:if test="${publicacion.estaPublicado ne 'S'}">
<form:select path="idTiempoPublicacion" items="${tiempos}" itemValue="id" itemLabel="label"/><span class="publicar_asterisco">*</span>
</c:if>
<form:errors path="idTiempoPublicacion" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divNombreComunBarrio">
<form:label path="nombreComunBarrio" title="Nombre común del barrio">Nombre común del barrio</form:label>
<form:input path="nombreComunBarrio" onkeypress="return validateAlpha(event)" maxlength="150"/><span class="publicar_asterisco"> *</span>
<form:errors path="nombreComunBarrio" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divEstrado">
<form:label path="estrato" title="Estrato">Estrato</form:label>
<form:input path="estrato" maxlength="100"/><span class="publicar_asterisco"> *</span>
<form:errors path="estrato" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divTelefono">
<form:label path="telefono" title="Teléfono">Teléfono</form:label>
<form:input path="telefono" onkeypress="return validateRegExp( event, /[0-9]/ )" maxlength="150"/><span class="publicar_asterisco"> *</span>
<form:errors path="telefono" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divCapacidad">
<form:label path="capacidad" title="Capacidad">Capacidad</form:label>
<form:input path="capacidad" tipo="numerico" onkeypress="return validateRegExp( event, /[0-9]/ )" onkeyup="formatNumber( this, event )" maxlength="150"/><span class="publicar_asterisco"> *</span>
<form:errors path="capacidad" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divTitulo">
<form:label path="titulo" title="Título">Título</form:label>
<form:input path="titulo" onkeypress="return validateRegExp( event, /^[0-9a-zA-ZñÑ\/\:\.\-\_\ \?\=\&\%]$/ )" maxlength="150"/><span class="publicar_asterisco"> *</span>
<form:errors path="titulo" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divInmuebleCompartido" >
<form:label path="inmuebleCompartido" title="Inmueble Compartido">Inmueble Compartido</form:label>
<form:radiobutton path="inmuebleCompartido" value="S" title="Si" onchange="inmuebleCompartidoControlPack(this.value)" />
<label class="radio"> Si </label>
<form:radiobutton path="inmuebleCompartido" value="N" title="No" onchange="inmuebleCompartidoControlPack(this.value)"/>
<label class="radio"> No </label>
</div>
<div class="clear" id="divInmuebleCompartido2"></div>
<div class="publicar_filaform" id="divPrecioNoche">
<form:label path="precioNoche" id="precioNocheTotal" title="Precio Noche">Precio Noche <b style="font-size: 9px;">(Acomodación total)</b>
</form:label>
<form:label path="precioNoche" id="precioNocheSencilla" title="Precio Noche">Precio Noche <b style="font-size: 9px;">(Acomodación sencilla)</b>
</form:label>
<form:input path="precioNoche" tipo="numerico" onkeypress="return validateRegExp( event, /[0-9]/ )" maxlength="150"/><span class="publicar_asterisco"> *</span>
<form:errors path="precioNoche" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
</div>
<div class="publicar_filaform" id="divUploadFileTarifa">
<form:label path="conFotos" title="Archivo de tarifas">Subir Archivo de Tarifas</form:label>
<input type="file" value="Seleccionar archivo" title="Seleccionar Archivo" onchange="setFileTarifa( this )" class="input_tooltip fileUpload" />
<input type='hidden' value='${publicacion.archivoTarifa}' name='archivoTarifa' id="hdnArchivoTarifa" />
</div>
<div class="publicar_filaform" id="divCaracteristicasPrinc">
<label for="nuevo">Caracteristicas principales</label>
<input type="hidden" value="${publicacion.caracteristicasPrincipales}" name="caracteristicasPrincipales" id="txtCaracteristicasPrincipales" />
<div class="tur_caracteristicas" id="divCaracteristicas">
<label title="Piscina">
<input type="checkbox" value="conPiscina" onclick="saveCaracteristicasPrincipales()" />
Piscina
</label>
<label title="Cocina">
<input type="checkbox" value="conCocinaEquipada" onclick="saveCaracteristicasPrincipales()" />
Cocina
</label>
<label title="Wifi">
<input type="checkbox" value="conWifi" onclick="saveCaracteristicasPrincipales()" />
Wifi
</label>
<label title="Internet">
<input type="checkbox" value="conInternet" onclick="saveCaracteristicasPrincipales()" />
Internet
</label>
<label title="Jacuzzi">
<input type="checkbox" value="conJacuzzi" onclick="saveCaracteristicasPrincipales()" />
Jacuzzi
</label>
<label title="Cable TV">
<input type="checkbox" value="conCableTV" onclick="saveCaracteristicasPrincipales()" />
Cable TV
</label>
<label title="Restaurante">
<input type="checkbox" value="conServicioRestaurante" onclick="saveCaracteristicasPrincipales()" />
Restaurante
</label>
<label title="BBQ">
<input type="checkbox" value="conBBQ" onclick="saveCaracteristicasPrincipales()" />
BBQ
</label>
<label title="Asensor">
<input type="checkbox" value="conAsensor" onclick="saveCaracteristicasPrincipales()" />
Ascensor
</label>
</div>
<div class="clear"></div>
</div>
</div>
<div class="clear"></div>
</div>
<div class="publicar_cont_registrorr" id="divDatosBasicosInmueble">
<div class="publicar_registror">
<h2 id="headerDatosbasicosInmueble">» Datos básicos del inmueble</h2>
<div class="publicar_filaform" id="divEstadoInmueble">
<form:label path="esNuevo" title="Estado del inmueble">Estado del inmueble</form:label>
<form:radiobutton path="esNuevo" value="S"/>
<label class="radio"> Nuevo </label>
<form:radiobutton path="esNuevo" value="N"/>
<label class="radio"> Usado </label>
</div>
<div id="divCaracteristicasGenerales">
</div>
</div>
<div class="clear" id="divClear"></div>
</div>
<div class="publicar_cont_registrorr" id="divComoLLegarInmueble">
<div class="publicar_registror">
<h2 id="headerComoLLegarInmueble">¿Cómo llegar?</h2>
<p id="subComoLLegarInmueble">Usted puede subir un mapa con las indicaciones de como llegar al inmueble, debe ser un archivo, jpg, png, gif o pdf que no supere 2 mb.</p>
<div class="publicar_filaform" id="divUploadFile">
<form:label path="conFotos" title="Subir archivo de mapa">Subir mapa</form:label>
<input type="file" value="Seleccionar archivo" title="Seleccionar archivo" onchange="setFileComollegar( this )" class="input_tooltip fileUpload" />
<input type='hidden' value='${publicacion.fileId}' name='fileId' id="hdnFileId" />
<!--a href="#" onclick="downloadFile()" >Descargar Archivo</a-->
</div>
<div class="publicar_filaform">
<form:label path="descripcionArchivo" title="Descripción">Descripción Archivo</form:label>
<form:textarea path="descripcionArchivo" onkeydown="return validarCTRL(event)" oncontextmenu="return false" onkeypress="validateMaxLenght( this, 500 );return validateRegExp( event, /[a-zA-Z0-9\ ]/ )" style="height: 130px;" /><b class="publicar_asterisco_popup">*</b>
<form:errors path="descripcionArchivo" cssClass="errorValidacionPublicacion" htmlEscape="false"/>
<div class="clear"></div>
</div>
<div class="clear" id="divClear"></div>
</div>
</div>
<div class="publicar_cont_registrorr" id="divDatosAdicionalesInmueble">
<div class="publicar_registror">
<h2 id="headerDatosAdicionales">» Datos adicionales y fotos</h2>
<p id="subHeaderDatosBasicosInmueble">Seleccione las opciones deseadas si quiere ingresar datos adicionales, fotos y/o videos.</p>
<div class="publicar_filaform" id="divDatosAdicionales">
<form:label path="datosAdicionales" title="Datos adicionales de su inmueble">Datos adicionales de su inmueble</form:label>
<form:radiobutton path="datosAdicionales" value="S"
title="Incluir datos adicionales"
onclick="javascript:mostrarCaracteristicasInmueble()" />
<label class="radio"> Si </label>
<form:radiobutton path="datosAdicionales" value="N" title="No incluir datos adicionales"/>
<label class="radio"> No </label>
</div>
<div class="publicar_filaform" id="divFotosAdicionales">
<form:label path="conFotos" title="Fotos y/o video">Fotos y/o video</form:label>
<form:radiobutton path="conFotos" value="S" title="Incluir fotos y/o video"/>
<label class="radio"> Si </label>
<form:radiobutton path="conFotos" value="N" title="No incluir fotos y/o video"/>
<label class="radio"> No </label>
</div>
</div>
<div class="clear" id="divClear"></div>
</div>
<div class="publicar_cont_registrorr" id="divInmuebleDestacadoContainer">
<div class="publicar_registror">
<h2 id="headerInmuebleDestacado">» Destacar inmueble</h2>
<p id="subHeaderInmuebleDestacado"> </p>
<div class="publicar_filaform" id="divInmuebleDestacado">
<form:label path="inmuebleDestacado" title="Fotos y/o video">Destacar el inmueble</form:label>
<form:radiobutton path="inmuebleDestacado" value="S" title="Incluir fotos y/o video" onclick="InformarInmuebleDestacado();"/>
<label class="radio"> Si </label>
<form:radiobutton path="inmuebleDestacado" value="N" title="No incluir fotos y/o video"/>
<label class="radio"> No </label>
</div>
</div>
</div>
<div class="publicar_filabtn" id="divActions">
<input name="continuar" type="button" class="publicar_filabtn_input" id="Continuar" value="Continuar"
onclick="guardarCaracteristicasGenerales();uploadFiles();enviarFormulario();"/>
</div>
</form:form>
</div>
<iframe id="frmDownloadFile" name="frmDownloadFile" style="width: 1px; height: 1px" frameborder="0"></iframe>
<iframe id="frmDownloadTarifa" name="frmDownloadTarifa" style="width: 1px; height: 1px" frameborder="0"></iframe>
<form style="display: none" action="<%=request.getContextPath()%>/publicacion/uploadfile.do" id="formUploadFile" enctype="multipart/form-data" target="frmDownloadFile" method="POST"></form>
<form style="display: none" action="<%=request.getContextPath()%>/publicacion/uploadfiletarifa.do" id="formUploadFileTarifa" enctype="multipart/form-data" target="frmDownloadTarifa" method="POST"></form>
</div>
<script type="text/javascript">
var strExec = "setTipoInmuebleControlPack(document.getElementById( 'idTipoInmueble' ).value);traerTipoinmuebleXcategoria();";
strExec += "setControlPack( document.getElementById( 'ddlCategoriaInmueble' ).value );setTipoInmuebleControlPack(document.getElementById( 'idTipoInmueble' ).value);";
strExec += "formatInputs( document );setInternalValues();";
window.setTimeout( strExec, 500);
function setInternalValues( ){
var txtCaracteristicasPrincipales = document.getElementById( "txtCaracteristicasPrincipales" );
var divCaracteristicas = document.getElementById( "divCaracteristicas" );
var inputs = divCaracteristicas.getElementsByTagName( "INPUT" );
var arrCaracteristicas = txtCaracteristicasPrincipales.value.split( ";" );
for( var i=0; i<inputs.length; i++ ){
for( var j=0; j<arrCaracteristicas.length; j++ ){
if( inputs[ i ].value == arrCaracteristicas[ j ] ){
inputs[ i ].checked = true;
break;
}
}
}
saveCaracteristicasPrincipales( );
}
function saveCaracteristicasPrincipales( ){
var txtCaracteristicasPrincipales = document.getElementById( "txtCaracteristicasPrincipales" );
var divCaracteristicas = document.getElementById( "divCaracteristicas" );
var inputs = divCaracteristicas.getElementsByTagName( "INPUT" );
var strCaracteristicas = "";
for( var i=0; i<inputs.length; i++ ){
if( inputs[ i ].checked ){
strCaracteristicas += ( strCaracteristicas != "" ? ";" : "" ) + inputs[ i ].value;
}
}
txtCaracteristicasPrincipales.value = strCaracteristicas;
}
function uploadFiles( ){
document.getElementById("formUploadFile").submit();
document.getElementById('formUploadFileTarifa').submit();
}
function setFileTarifa( src ){
var fileExt = (src.value.split(".") < 2 ? "unknow" : src.value.split(".")[src.value.split(".").length - 1]).toLowerCase();
//document.getElementById( "fileUploaded" ).value = "";
if (fileExt != "xls" && fileExt != "doc" && fileExt != "pdf" && fileExt != "docx" && fileExt != "xlsx" && fileExt != "ods" && fileExt != "odt" && fileExt != "txt") {
src.value = "";
alert("Solamente se pueden subir archivos xls, xlsx, docx, doc o pdf.");
return;
}
var newInput = src.cloneNode(true);
newInput.id = "archivoTarifa";
newInput.name = "archivoTarifa";
document.getElementById("formUploadFileTarifa").innerHTML = "<input type='text' value='${publicacion.archivoTarifa}." + fileExt + "' name='tfilename' />";
document.getElementById("formUploadFileTarifa").appendChild(newInput);
document.getElementById( "hdnArchivoTarifa" ).value = "${publicacion.archivoTarifa}." + fileExt;
}
function setFileComollegar(src) {
var fileExt = (src.value.split(".") < 2 ? "unknow" : src.value.split(".")[src.value.split(".").length - 1]).toLowerCase();
if (fileExt != "jpg" && fileExt != "jpeg" && fileExt != "png" && fileExt != "gif" && fileExt != "pdf") {
src.value = "";
alert("Solamente se pueden subir archivos jpg, png, gif o pdf.");
return;
}
var newInput = src.cloneNode(true);
newInput.id = "fileComollegar";
newInput.name = "fileComollegar";
document.getElementById("formUploadFile").innerHTML = "<input type='text' value='${publicacion.fileId}." + fileExt + "' name='filename' />";
document.getElementById("formUploadFile").appendChild(newInput);
document.getElementById( "hdnFileId" ).value = "${publicacion.fileId}." + fileExt;
}
function setControlPack(controlPack) {
var strLocalizacionInmueble = "divLocalizacionInmueble,divDepartamento,";
strLocalizacionInmueble += "divCiudad,divTiempoPublicacion,divCategoriaInmueble,divTiempoZZ,divDireccion,divNombreComunBarrio,divEstrado";
var strDatosBasicosInmueble = "divDatosBasicosInmueble,headerDatosbasicosInmueble,divEstadoInmueble,divTipoNegocio,divEstadoInmueble,divCaracteristicasGenerales,divClear,selTipoNegocio";
var strDatosAdicionalesInmueble = "divDatosadicionalesH2,divDatosAdicionales";
var strCamposTurismo = "divComoLLegarInmueble,headerDatosbasicosInmueble,divLocalizacionInmueble,divDireccion,divDepartamento,";
strCamposTurismo += "divCiudad,divTelefono,divTipoNegocio,divCapacidad,divTitulo,divPrecioNoche,divUploadFileTarifa,";
strCamposTurismo += "divInmuebleDestacadoContainer,divCaracteristicasPrinc,divFotosVideosH2,divInmuebleCompartido";
var strExtras = "divActions,divCategoriaInmueble";
var arrLocalizacionInmueble = strLocalizacionInmueble.split(",");
var arrDatosBasicosInmueble = strDatosBasicosInmueble.split(",");
var arrDatosAdicionalesInmueble = strDatosAdicionalesInmueble.split(",");
var arrCamposTurismo = strCamposTurismo.split(",");
var arrExtras = strExtras.split(",");
disableControlArr(arrCamposTurismo, false);
disableControlArr(arrLocalizacionInmueble, true);
disableControlArr(arrDatosBasicosInmueble, true);
disableControlArr(arrDatosAdicionalesInmueble, true);
disableControlArr(arrExtras, true);
}
function setTipoInmuebleControlPack(tipoInmuebleControlPack) {
var inmuebleCompartido = "divInmuebleCompartido,divInmuebleCompartido2";
var arrInmuebleCompartido = inmuebleCompartido.split(",");
disableControlArr(arrInmuebleCompartido, false);
if (tipoInmuebleControlPack == "2" || tipoInmuebleControlPack == "7") {
disableControlArr(arrInmuebleCompartido, true);
} else {
disableControlArr(arrInmuebleCompartido, false);
}
inmuebleCompartidoControlPack('N');
}
function inmuebleCompartidoControlPack(compartidoControlPack) {
var precioNocheSencilla = "precioNocheSencilla";
var precioNocheTotal = "precioNocheTotal"
var arrPrecioNocheSencilla = precioNocheSencilla.split(",");
var arrPrecioNocheTotal = precioNocheTotal.split(",");
disableControlArr(arrPrecioNocheSencilla, false);
disableControlArr(arrPrecioNocheTotal, true);
}
function disableControlArr(arrControl, display) {
for ( var kk = 0; kk < arrControl.length; kk++) {
try {
document.getElementById(arrControl[kk]).style.display = (display ? "" : "none");
}
catch( ex ){}
}
}
function InformarInmuebleDestacado( ){
if( "${publicacion.idInmuebleDestacado}".replace( /\ /, "" ) != "" && "${publicacion.idInmuebleDestacado}" != "${publicacion.idInmueble}" )
alert( "El Inmueble ${publicacion.idInmuebleDestacado} Será marcado como NO destacado cuando se publique el presente inmueble" );
}
</script>
</body>