struts1重定向

boco_lc 2020-07-09 11:03:49
已经实现了的功能:
两种工单分别请求能正常获取到页面数据,
1、请求 http://10.101.214.121:9080/eoms35/sheet/complaint/complaint.do?method=showDetailPageByGreenNo&greenNo=20200702ceshi5
返回detail.jsp
代码如下
ComplaintAction类中
public ActionForward showDetailPageByGreenNo(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {

IMainService iMainService = (IMainService) ApplicationContextHolder.getInstance().getBean(
"iComplaintMainManager");
IMainService complaintHomeiMainService = (IMainService)ApplicationContextHolder.getInstance().getBean("iComplaintHomeMainManager");
String greenNo = StaticMethod.null2String(request.getParameter("greenNo"));
if (!greenNo.equals("")) {
List list = iMainService.getMainListByParentSheetId(greenNo);
List listComplaintHome = complaintHomeiMainService.getMainListByParentSheetId(greenNo);
if (list != null && list.size() > 0) {
BaseMain baseMain = (BaseMain) list.get(0);
request.setAttribute("sheetKey", baseMain.getId());

String beanName = mapping.getAttribute();
IBaseSheet baseSheet = (IBaseSheet) getBean(beanName);
baseSheet.showDetailPage(mapping, form, request, response);
return mapping.findForward("detail");
}
else if (listComplaintHome != null && listComplaintHome.size() > 0) {
//获得此工单main表id,并存在request中。
// BaseMain baseMain = (BaseMain) listComplaintHome.get(0);
// request.setAttribute("sheetKey", baseMain.getId());
// String beanName = mapping.getAttribute();
// IBaseSheet baseSheet = (IBaseSheet) getBean("ComplaintHome");
// baseSheet.showDetailPage(mapping, form, request, response);
// ActionForward forward = mapping.findForward("showDetailPageByGreenNo");

ActionForward forward = new ActionForward("complainthome.do?method=showDetailPageByGreenNo&greenNo="+greenNo);
forward.setRedirect(true);
return forward;
}
else {
BocoLog.info(this, "不存在工单号为:" + greenNo + "的工单!");
return mapping.findForward("error");
}
} else {
BocoLog.info(this, "工单号不能为空!");
return mapping.findForward("error");
}
}
struts配置文件如下 struts-config-sheet-complaint.xml
<action path="/complaint"
type="com.boco.eoms.sheet.complaint.webapp.action.ComplaintAction"
name="multiPageForm" scope="request" input="error" parameter="method"
unknown="false" validate="false" attribute="Complaint">
<forward name="detail"
path="/WEB-INF/pages/wfworksheet/complaint/detail.jsp"
redirect="false" contextRelative="true" />
</action>
2、请求地址http://10.101.214.121:9080/eoms35/sheet/complainthome/complainthome.do?method=showDetailPageByGreenNo&greenNo=20200623xs6
返回detail.jsp
代码如下
ComplaintHomeAction类中
public ActionForward showDetailPageByGreenNo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception{

IMainService iMainService =
(IMainService)ApplicationContextHolder.getInstance().getBean("iComplaintHomeMainManager");
String greenNo = StaticMethod.null2String(request.getParameter("greenNo"));
if(!greenNo.equals("")){
List list = iMainService.getMainListByParentSheetId(greenNo);
if(list!=null && list.size()>0){
BaseMain baseMain = (BaseMain) list.get(0);
request.setAttribute("sheetKey", baseMain.getId());

String beanName = mapping.getAttribute();
IBaseSheet baseSheet = (IBaseSheet) getBean(beanName );
baseSheet.showDetailPage(mapping, form, request, response);
return mapping.findForward("detail");
}else{
BocoLog.info(this, "不存在工单号为:"+greenNo+"的工单!");
return mapping.findForward("error");
}
}else{
BocoLog.info(this, "工单号不能为空!");
return mapping.findForward("error");
}
}
struts配置文件如下 struts-config-sheet-complainthome.xml
<action path="/complainthome"
type="com.boco.eoms.sheet.complainthome.webapp.action.ComplaintHomeAction"
name="multiPageForm" scope="request" input="error" parameter="method"
unknown="false" validate="false" attribute="Complainthome">
<forward name="detail"
path="/WEB-INF/pages/wfworksheet/complainthome/detail.jsp"
redirect="false" contextRelative="true" />
</action>

问题描述:
1、两种工单数据呈现在同一个列表中,根据工单号下钻获取详情。
例如,获取其中一类工单url为
http://10.101.214.121:9080/eoms35/sheet/complaint/complaint.do?method=showDetailPageByGreenNo&greenNo=20200702ceshi5

如果是另外一种工单,工单号为20200623xs6,url本应该是
http://10.101.214.121:9080/eoms35/sheet/complainthome/complainthome.do?method=showDetailPageByGreenNo&greenNo=20200623xs6

但由于两种工单放在同一个列表中,是用的同一个url:http://10.101.214.121:9080/eoms35/sheet/complaint/complaint.do?method=showDetailPageByGreenNo&greenNo=
所以,当获取20200623xs6的详情,就需要重定向到
http://10.101.214.121:9080/eoms35/sheet/complainthome/complainthome.do?method=showDetailPageByGreenNo&greenNo=20200623xs6

ComplaintAction类中showDetailPageByGreenNo方法中增加判断代码
else if (listComplaintHome != null && listComplaintHome.size() > 0) {
//获得此工单main表id,并存在request中。
// BaseMain baseMain = (BaseMain) listComplaintHome.get(0);
// request.setAttribute("sheetKey", baseMain.getId());
// String beanName = mapping.getAttribute();
// IBaseSheet baseSheet = (IBaseSheet) getBean("ComplaintHome");
// baseSheet.showDetailPage(mapping, form, request, response);
// ActionForward forward = mapping.findForward("showDetailPageByGreenNo");

ActionForward forward = new ActionForward("complainthome.do?method=showDetailPageByGreenNo&greenNo="+greenNo);
forward.setRedirect(true);
return forward;
struts配置文件 struts-config-sheet-complaint.xml 中增加
<action path="/complainthome"
type="com.boco.eoms.sheet.complainthome.webapp.action.ComplaintHomeAction"
name="ComplaintHome" scope="request" input="error" parameter="method"
unknown="false" validate="false">
<set-property property="cancellable" value="true" />
<forward name="detail"
path="/WEB-INF/pages/wfworksheet/complainthome/detail.jsp"
redirect="false" contextRelative="true" />
</action>

请求URL http://10.101.214.121:9080/eoms35/sheet/complaint/complaint.do?method=showDetailPageByGreenNo&greenNo=20200623xs6

页面跳转到了http://10.101.214.121:9080/eoms35/sheet/complaint/complainthome.do?method=showDetailPageByGreenNo&greenNo=20200623xs6

而想要的效果是重定向请求到http://10.101.214.121:9080/eoms35/sheet/complainthome/complainthome.do?method=showDetailPageByGreenNo&greenNo=20200623xs6

只有200积分,请求大神给与解答下奥
...全文
5431 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxxkingBeast 2020-07-29
  • 打赏
  • 举报
回复
structs1 真是文物了感觉。。。
一只三黄鸡 2020-07-13
  • 打赏
  • 举报
回复
那些年我也维护过struts1的老项目,不敢增加新框架,能改的就改,哈哈哈
hx366 2020-07-10
  • 打赏
  • 举报
回复
是不是 买了本 10年前的 java web 书籍,然后在照着自学、编程 ?如果想自学,去招聘网站上 看看 大多数公司要求些什么技能
rumlee 2020-07-09
  • 打赏
  • 举报
回复
struts1还有人在用,这真是老古董了。
qq_39936465 2020-07-09
  • 打赏
  • 举报
回复
也可以试试在ActionForward中写入完整的url ActionForward forward = new ActionForward("http://10.101.214.121:9080/eoms35/sheet/complainthome/complainthome.do?method=showDetailPageByGreenNo&greenNo="+greenNo);
qq_39936465 2020-07-09
  • 打赏
  • 举报
回复
你原来的程序mapping应该都是相同的,所以转不到你想要的页面,试试下面的语句 response.sendRedirect(”重定向的url“); return null;
qq_39936465 2020-07-09
  • 打赏
  • 举报
回复
引用 楼主 boco_lc 的回复:
已经实现了的功能: 只有200积分,请求大神给与解答下奥
楼主要学会贴程序,struts1还有在用?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧