Author: jleroux
Date: Tue Feb  4 18:14:21 2014
New Revision: 1564405

URL: http://svn.apache.org/r1564405
Log:
"Applied fix from trunk for revision: 1559814" 
------------------------------------------------------------------------
r1559814 | jleroux | 2014-01-20 20:38:45 +0100 (lun. 20 janv. 2014) | 38 lignes

A patch from Michael Ende for "SimpleMethod parameters doesnt work with prefix" 
https://issues.apache.org/jira/browse/OFBIZ-5371

I experienced some problems when a form submitted parameters with prefix 
directly to a SimpleMethod (through the controller request). 
In this case the prefix is not stripped from the parameter name. The patch 
updates the method ModelService.java:makePrefixMap().

The idea of the prefixMap is: 
If you have some fields like packageweight_1(value=55), 
packageweight_2(value=65) ... in a form and in a service you need a map called 
packageweight with the following key values 

packageweight{1=55;2=56;...}

The Problem is that the function makePrefixMap doesn't replace the Prefix.

For Example:
On the "Complete" button of the Facility->Shipment screen we call an event and 
not the completePack service directly.
The event checks some user rights and after that he call the completePack 
service. If we call the service from an event there throws an 
NumberFormatException because the packeweight-PrefixMap contains the prefixes.

This is my event description:
 <simple-method method-name="completePackCheckPermission"
        short-description="Check if this user has permission to create a 
picklist role"
        login-required="true">
        <check-permission permission="LOGISTICS_CREATE">
            <alt-permission permission="LOGISTICS_ADMIN"/>
            <fail-property resource="EcommerceLogisticsErrorUiLabels" 
property="NoPermissionForUsage" />
        </check-permission>
        <check-errors />

        <session-to-field field="packingSession"/>
        <set field="parameters.packingSession" from-field="packingSession"/>

        <set-service-fields service-name="completePack" 
to-map="serviceParameters"
            map="parameters" />
        <call-service service-name="completePack" 
in-map-name="serviceParameters" />
        <return />
    </simple-method>

jleroux: I'm not quite sure there are no side-effects, but I was not able to 
find one. So I will wait some time before backporting...


------------------------------------------------------------------------


Modified:
    ofbiz/branches/release13.07/   (props changed)
    
ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/ModelService.java

Propchange: ofbiz/branches/release13.07/
------------------------------------------------------------------------------
  Merged /ofbiz/trunk:r1559814

Modified: 
ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/ModelService.java
URL: 
http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/ModelService.java?rev=1564405&r1=1564404&r2=1564405&view=diff
==============================================================================
--- 
ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/ModelService.java
 (original)
+++ 
ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/ModelService.java
 Tue Feb  4 18:14:21 2014
@@ -925,6 +925,7 @@ public class ModelService extends Abstra
         for (Map.Entry<String, ? extends Object> entry: source.entrySet()) {
             String key = entry.getKey();
             if (key.startsWith(param.stringMapPrefix)) {
+                key=key.replace(param.stringMapPrefix,"");
                 paramMap.put(key, entry.getValue());
             }
         }


Reply via email to