SSH开发问题-修改页面校验失败后返回原来页面(非OGNL)
2016-06-16 20:54
531 查看
记录2016-06-16大三SSH综合实训课
今天做结课作品遇到一个问题,就是当修改业务页面因为校验失败时返回原来的修改页面出现问题。
试着解决问题,用了不同方法:
用chain启用pageAction的showUpdateNotice方法重返修改页面:
当校验失败返回修改页面时表单信息能正确显示,但错误提示消息丢失无法显示,分析原因就是重新请求action时,因为重定向导致request丢失携带的错误信息,而notice因为pageAction重新获取表单信息。
直接跳转到
当校验失败返回修改页面时表单信息无法正确显示,分析原因就是重定向返回修改页面时request丢失了notice对象而没有重新获取。
**解决方法:
在pageAction中showUpdateNotice方法中讲查询得到的notice对象存放到session中,这样页面之间的跳转不会影响notice对象的存放**
当然最好的解决方法还是OGNL
今天做结课作品遇到一个问题,就是当修改业务页面因为校验失败时返回原来的修改页面出现问题。
试着解决问题,用了不同方法:
<%@ page language="java" pageEncoding="utf-8"%> <%@ page import="java.text.*" %> <%@ page import="java.util.*"%> <%@ page import="com.doctorFamily.domain.*"%> <%@ taglib prefix="s" uri="/struts-tags" %> <div class="main-container" id="main-container"> <div class="main-container-inner"> <div class="main-content"> <!--<div class="navbar navbar-default" id="navbar">--> <div class="page-content"> <% Notice notice = (Notice)request.getSession().getAttribute("singleNotice"); if(notice == null) out.print("获取失败"); if(notice != null){ %> <!--<div class="row">--> <!-- PAGE CONTENT BEGINS --> <form class="form-horizontal" role="form" action="<%=request.getContextPath()%>/notice/notice_UpdateNotice" method="post"> <!-- 隐藏公告编号以作为主键进行修改 --> <input type="hidden" name="notice.no" value="<%=notice.getNo()%>"/> <input type="hidden" name="notice.createTime" value="<%=notice.getCreateTime()%>"/> <div class="form-group"> <div class="col-sm-6"> <h4 class="header green">标题</h4> <div class="col-sm-6"> <input name="notice.title" type="text" id="residentId" placeholder="标题" value="<%=notice.getTitle() %>"/> </div> </div> </div> <s:fielderror cssStyle="color:red; margin-bottom:0px; list-style:none;"> <s:param>notice.title</s:param> </s:fielderror> <div class="space-4"></div> <div class="form-group"> <div class="col-sm-6"> <h4 class="header green">类别</h4> <div class="col-sm-6"> <select name="notice.type"> <option value="1" <%if(notice.getType()==1) {out.print("selected='selected'");} %> >公告通知</option> <option value="2" <%if(notice.getType()==2) {out.print("selected='selected'");} %> >行业新闻</option> </select> </div> </div> </div> <div class="space-4"></div> <div class="form-group"> <div class="col-sm-6"> <h4 class="header green">内容</h4> <div class="widget-box"> <div class="widget-header widget-header-small header-color-green"></div> <div class="widget-body"> <div class="widget-main no-padding"> <div class="wysiwyg-editor" id="editor2"> <%=notice.getContent() %> <input id="noticeContent" type="hidden" name="notice.content"/> </div> </div> <s:fielderror cssStyle="color:red; margin-bottom:0px; list-style:none;"> <s:param>notice.content</s:param> </s:fielderror> <div class="widget-toolbox padding-4 clearfix"> <div class="btn-group pull-right"> <button class="btn btn-sm btn-success" type="submit" onclick="getContent()"> <i class="icon-globe bigger-125"></i>发 布 <i class="icon-arrow-right icon-on-right bigger-125"></i> </button> </div> </div> </div> </div> </div> </div> <!-- PAGE CONTENT ENDS --> </form> <!-- /.col --> <!--</div>--> <!-- /.row --> <% } %> </div> <!-- /.page-content --> <!-- /.main-content --> <!--</div>--> <!-- /.main-container-inner --> </div> </div> </div> </div> <!-- 获取div中的文本信息 --> <script type="text/javascript"> function getContent(){ var content = document.getElementById('editor2').innerText; document.getElementById('noticeContent').value = content; } </script>
用chain启用pageAction的showUpdateNotice方法重返修改页面:
<!-- NoticeAction --> <package name="notice" extends="struts-default" namespace="/notice"> <action name="notice_*" class="noticeAction" method="do{1}"> <result name="operateSuccess" type="chain"> <param name="actionName">page_showAllNotice</param> <param name="namespace">/page</param> </result> <result name="input" type="chain"> <param name="actionName">page_show{1}</param> <param name="namespace">/page</param> </result> </action> </package>
当校验失败返回修改页面时表单信息能正确显示,但错误提示消息丢失无法显示,分析原因就是重新请求action时,因为重定向导致request丢失携带的错误信息,而notice因为pageAction重新获取表单信息。
直接跳转到
<result name="input">重返修改页面
<!-- NoticeAction --> <package name="notice" extends="struts-default" namespace="/notice"> <action name="notice_*" class="noticeAction" method="do{1}"> <result name="operateSuccess" type="chain"> <param name="actionName">page_showAllNotice</param> <param name="namespace">/page</param> </result> <result name="input">/background/show{1}.jsp</result> </action> </package>
当校验失败返回修改页面时表单信息无法正确显示,分析原因就是重定向返回修改页面时request丢失了notice对象而没有重新获取。
**解决方法:
在pageAction中showUpdateNotice方法中讲查询得到的notice对象存放到session中,这样页面之间的跳转不会影响notice对象的存放**
public String showUpdateNotice() { HttpServletRequest request = ServletActionContext.getRequest(); // request.setAttribute("singleNotice", // noticeService.getNoticeById(noticeID)); request.getSession().setAttribute("singleNotice", noticeService.getNoticeById(noticeID)); return "background"; }
当然最好的解决方法还是OGNL
相关文章推荐
- iOS: 删除真机测试的Provisioning Profile后,在Code Singing中出现entitlements.plist文件无效,解决办法如下:
- javaScript DOM操作技术
- 最长公共子序列
- 整数的素数因子
- 原来我真的不会用seajs
- 【Git】Git指令学习与其原理探究(一)
- BinarySortTree java python leetcode
- B00010 map
- JMS是一种应用于异步消息传递的标准API
- UVA 10970-Big Chocolate
- 【C语言】21-结构体
- 华为机试---数独
- android之HttpURLConnection 字段解析
- SDWebImage
- No such file or directory没有这个文件
- 玩转linux主机--Openstack部署
- 洛谷P1262
- ecshop 分页增加自定义参数,以投票页面为例
- iOS开发教程之Objc Runtime笔记
- HandlerThread