ofbiz进击 个人遇到的奇葩问题汇总。

时间:2023-03-09 06:03:58
ofbiz进击 个人遇到的奇葩问题汇总。

在本人做退货单生成的时候,因为考虑到要控制通过java类方法去调用 service服务可以方便给出提示消息,所以专门新建了一个java类,然后去重新请求request请求,下面为Java类的代码

 public static String confirmReturnOrder(HttpServletRequest request,
HttpServletResponse response) {
String responseString = "error";
try {
responseString = EventFactory.runRequestEvent(request, response, "makeQuickReturn");
} catch (EventHandlerException e) {
Debug.logError(e, "创建退货单出错", module);
}
return "success";
}

然后在这里面调用了makeQuickReturn 这个请求,这个请求里面是直接调用service服务的。

 <request-map uri="makeQuickReturn">
<security https="true" auth="true"/>
<event type="service-multi" invoke="createReturnAndItemOrAdjustment"/>
<response name="success" type="request-redirect-noparam" value="findReturnOrder"></response>
<response name="error" type="view-last"/>
</request-map>

control请求里面的写法、

  <request-map uri="confirmReturnOrder">
<security https="false" auth="true"/>
<event type="java" invoke="confirmReturnOrder" path="com.brains.order.ReturnOrderEvents"></event>
<response name="success" type="request-redirect-noparam" value="findReturnOrder"></response>
<response name="error" type="view-last"/>
</request-map>
<request-map uri="makeQuickReturn">
<security https="true" auth="true"/>
<event type="service-multi" invoke="createReturnAndItemOrAdjustment"/>
<response name="success" type="request-redirect-noparam" value="findReturnOrder"></response>
<response name="error" type="view-last"/>
</request-map>

首先分析下,是在 confirmReturnOrder 的 control 里面调用的 makeQuickReturn 这个请求的,因此最终返回的view肯定是走的 confirmReturnOrder 返回的请求的。

但是即使我在两个请求里面的response 里面都定义为重定向的方式,在重定向返回的列表里面还是会带有返回过来的参数(调用service服务产生的returnId)

最后,在项目经理的指导下,才知道使用java类返回的response里面是会将调用的service服务返回的参数封装在 attributes里面,因此在页面里面,将parameters 改为requestParameters即可(因为parameters里面还包含了attributes跟parameters两种参数里面)