ofbiz进击 个人遇到的奇葩问题汇总。
在本人做退货单生成的时候,因为考虑到要控制通过java类方法去调用 service服务可以方便给出提示消息,所以专门新建了一个java类,然后去重新请求request请求,下面为Java类的代码
1 public static String confirmReturnOrder(HttpServletRequest request, 2 HttpServletResponse response) { 3 String responseString = "error"; 4 try { 5 responseString = EventFactory.runRequestEvent(request, response, "makeQuickReturn"); 6 } catch (EventHandlerException e) { 7 Debug.logError(e, "创建退货单出错", module); 8 } 9 return "success"; 10 }
然后在这里面调用了makeQuickReturn 这个请求,这个请求里面是直接调用service服务的。
1 <request-map uri="makeQuickReturn"> 2 <security https="true" auth="true"/> 3 <event type="service-multi" invoke="createReturnAndItemOrAdjustment"/> 4 <response name="success" type="request-redirect-noparam" value="findReturnOrder"></response> 5 <response name="error" type="view-last"/> 6 </request-map>
control请求里面的写法、
1 <request-map uri="confirmReturnOrder"> 2 <security https="false" auth="true"/> 3 <event type="java" invoke="confirmReturnOrder" path="com.brains.order.ReturnOrderEvents"></event> 4 <response name="success" type="request-redirect-noparam" value="findReturnOrder"></response> 5 <response name="error" type="view-last"/> 6 </request-map> 7 <request-map uri="makeQuickReturn"> 8 <security https="true" auth="true"/> 9 <event type="service-multi" invoke="createReturnAndItemOrAdjustment"/> 10 <response name="success" type="request-redirect-noparam" value="findReturnOrder"></response> 11 <response name="error" type="view-last"/> 12 </request-map>
首先分析下,是在 confirmReturnOrder 的 control 里面调用的 makeQuickReturn 这个请求的,因此最终返回的view肯定是走的 confirmReturnOrder 返回的请求的。
但是即使我在两个请求里面的response 里面都定义为重定向的方式,在重定向返回的列表里面还是会带有返回过来的参数(调用service服务产生的returnId)
最后,在项目经理的指导下,才知道使用java类返回的response里面是会将调用的service服务返回的参数封装在 attributes里面,因此在页面里面,将parameters 改为requestParameters即可(因为parameters里面还包含了attributes跟parameters两种参数里面)
作者:wangqc
出处:http://www.cnblogs.com/wangqc/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-wangqc。