- 工作中我们常常会遇到表单验证不通过后的跳转问题,以及跳转后丢失参数的问题,下面我们针对以上问题进行分析及给出解决方案。
表单验证失败处理流程
- uploadAttachment.vm(表单提交) ——> XXXAction(@FormGroup注解执行失败) ——> UploadAttachment.java ——> uploadAttachment.vm
表单验证失败跳转机制
<form action="" method="post" id="upload-attachment-form">
$csrfToken.hiddenField
<input type="hidden" name="action" value="project_action"/>
<input type="hidden" name="event_submit_do_upload_attachment" value="event_submit_do_upload_attachment"/>
<input type="hidden" name="$group.containerId.key" value="$project.id">
<input onchange="uploadFile()" style="display:none" id="uploadAttachment" name="$!group.file.key" value="$!group.file.value" type="text" />
</form>
假如我们当前的url为:
http://localhost:8080/project/upload_attachment.htm?versionId=27437
则上面的表单提交且验证失败后,会根据 form 标签中的 action="" 中的值进行跳转,如果留空则为跳转到当前页面。
根据上面的代码,会跳转到http://localhost:8080/project/upload_attachment.htm?versionId=27437
* 注意 url中带有versionId参数
再来看下面这段代码,为上传附件的表单提交,并进行验证
<form action="" method="post" id="upload-attachment-form" enctype="multipart/form-data">
$csrfToken.hiddenField
<input type="hidden" name="action" value="project_action"/>
<input type="hidden" name="event_submit_do_upload_attachment" value="event_submit_do_upload_attachment"/>
<input type="hidden" name="$group.containerId.key" value="$project.id">
<input onchange="uploadFile()" style="display:none" id="uploadAttachment" name="$!group.file.key" value="$!group.file.value" type="file" />
</form>
假如我们当前的url仍为:
http://localhost:8080/project/upload_attachment.htm?versionId=27437
则上面的表单提交且验证失败后,跳转回的url为http://localhost:8080/project/upload_attachment.htm
* 注意 丢失掉了versionId参数,跳转回的结果不是我们想要的
如何解决二进制表单提交验证不通过后的跳转问题?
如果表单中要上传附件,即带有enctype="multipart/form-data"标签,如下:
<form action="" method="post" id="upload-attachment-form" enctype="multipart/form-data">
$csrfToken.hiddenField
<input type="hidden" name="action" value="project_action"/>
<input type="hidden" name="event_submit_do_upload_attachment" value="event_submit_do_upload_attachment"/>
<input type="hidden" name="$group.containerId.key" value="$project.id">
<input type="hidden" name="versionId" value="$project.id">
<input onchange="uploadFile()" style="display:none" id="uploadAttachment" name="$!group.file.key" value="$!group.file.value" type="file" />
</form>
则表单中的数据是以二进制文件流的方式提交到后端,会忽略掉url中带入的参数。
将url中所要传递的参数以表单隐藏域的形式进行提交,则问题就会得以解决:
则跳转回http://localhost:8080/project/upload_attachment.htm?versionId=27437这个页面,其中带上了versionId参数。
- 总结: 1.利用好action="XXX"来控制验证不通过后的跳转。
- 2.如果是以二进制的形式传输表单数据,记得要把url中的参数带入到表单中。
相关推荐
Webx是基于Java的Web应用框架,它具有高成熟度和可靠性,并且具备强大的开放性和扩展性。Webx框架的文档详细介绍了该框架的设计理念、历史、优势以及与Spring框架的集成等方面。文档内容主要分为两大部分:Webx框架...
WebX是一个基于Java的开源Web应用框架,它提供了一种高效、灵活的...参考提供的文档和资源,如《Webx配置文件加载顺序与作用.docx》、《webx基础.docx》和《表单验证webx.pptx》,将有助于进一步提升WebX的使用技能。
3. **组件**:WebX3提供了丰富的组件库,如表格、表单、按钮等,用于构建用户界面。 4. **控制器和服务**:控制器处理用户请求,调用服务执行业务逻辑,然后返回结果给视图。 5. **视图**:展示给用户的界面,通常由...
在"petstore-webx3"这个压缩包中,我们可能找到了一个示例应用——PetStore,它是基于WebX框架的一个在线宠物商店的实现。 WebX 的核心特点和关键技术主要包括以下几个方面: 1. **MVC(Model-View-Controller)...
- **成熟可靠性**:作为阿里巴巴内部众多大型项目的基石,Webx3已经经过了多年的实践检验,证明了其在高并发、大数据量处理场景下的稳定性和高效性。 - **开放与扩展性**:Webx3支持开发者根据实际需求进行定制化...
Webx3中文指南, 非常详细!
- **强大的表单处理**:Webx提供了一套完整的表单验证和处理机制,支持自定义验证规则。 - **灵活的URL映射**:开发者可以根据需要自定义URL映射规则,实现友好的URL设计。 - **易扩展**:Webx的模块化设计使得添加...
Webx3_Guide_Book 用户指南 2001年,阿里巴巴内部开始使用Java Servlet作为WEB服务器端的技术,以取代原先的 Apache HTTPD server和mod_perl的组合。 • 2002年,选择Jakarta Turbine作为WEB框架,并开始在此之上...
《WebX3 Guide Book学习指南》是一本由Michael Zhou编写的关于Webx框架的专业书籍,出版于2010年11月13日。Webx框架是一个用于构建Web应用程序的强大工具,尤其在Java开发领域中有着广泛的应用。本书旨在为开发者...
综上所述,《Webx3_Guide_Book.pdf》将带领我们逐步探索Webx3框架的每个角落,从基础概念到高级特性,从理论到实践,帮助开发者熟练掌握这一强大工具,提升Java Web开发的专业技能。无论是初学者还是经验丰富的...
3. Webx的历史 ....................................................................................................... ix 4. 为什么要用Webx而不是其它的开源框架? ........................................
《Webx3日志系统配置指南》 在Web开发中,日志系统是不可或缺的一部分,它可以帮助开发者跟踪程序运行状态,定位错误,以及进行性能分析。Webx3是一款功能强大的Web应用框架,其中包含了完善的日志处理机制。本文将...
在Webx3中获取Cookie的值是Web开发中常见的任务,尤其对于依赖用户会话信息的应用来说至关重要。Webx3是一个基于Java的企业级Web应用框架,...记住,不断学习和实践是提升技能的关键,祝你在Webx3开发中取得更多成就!
### Webx3 PDF(阿里巴巴前端Web框架):深入解析与技术要点 #### 引言 Webx是一款由阿里巴巴推出的前端Web框架,旨在提供一个高效、灵活且可扩展的基础架构来支持大规模Web应用的开发。本文章将从Webx框架的核心...
《剖析paoding-webx3-solr-lucene:构建高效搜索引擎的深度探索》 在现代互联网应用中,数据量的增长速度惊人,如何高效地搜索和处理这些数据成为了开发者面临的重大挑战。"paoding-webx3-solr-lucene"是一个专注于...
文件名“Webx3_requestContexts.docx”可能是指Webx的第三个主要版本(Webx3)中的Request Context(请求上下文)部分。Request Context是Web框架中常见的一种设计模式,用于封装HTTP请求的相关信息,如请求参数、...
通过深入学习WEBX框架,开发者可以更好地理解和实践淘宝的开发流程,从而在实际工作中更快速地适应和产出。 **1. WEBX框架的核心特性** WEBX框架的核心特性包括模块化、面向服务的设计、灵活的数据访问层以及强大...
- **Webx3应用的Context结构**:Webx3中取消了`ServiceContext`的概念,改为直接使用Spring Context。整体结构被简化为两层:根容器`SpringRootContext`和子容器`SpringSubContext`。子容器中的Bean可以直接访问根...
Webx是一个由阿里巴巴开源的Java企业级应用开发框架,它是Spring框架的一种扩展和深化。Webx的设计理念建立在层次化架构之上,提倡页面驱动、约定优于配置等设计原则。它的出现为Java开发者提供了一个可以替代传统...
总的来说,WebX入门指南示例程序是一个很好的学习起点,通过实践和理解这个示例,你将能够掌握WebX的基本概念和用法,为进一步深入学习和开发WebX应用打下坚实的基础。同时,参考博客文章...