The best practice in OFBiz is to define a separate form/screen to perform the CRUD operation on a certain entity and it seems that you are trying to update multiple entities through some generic form & service? You may go with Deepak's suggestion.
Regards Vikas On Apr 20, 2012, at 10:41 PM, Skip wrote: > Vikas > > Thank for the response. However, in this case, if you look at the service > definition below, the entity is passed in when the service is called. It is > not known in advance. In the java code I wrote, I used > GenericEntity.getAllFields() to retrieve the fields and map them to the > values passed in in the request parameters. This all works fine. I would > just like to use a service instead of java code. I could do that if I could > convince the service engine to pass all the parameters in the > HttpServletRequest in the context to the service. I expected that to happen > if I used validate=false, but sadly, that is not the case. > > Is there perhaps another setting I can use? I scanned the services.xsd > file but found no likely attribute. Or perhaps, I can modify the part of > the service code where the context is built. I looked all over the service > engine to see where it set up the context, but could not find where it > happened. > > Skip > > > > -----Original Message----- > From: Vikas Mayur [mailto:[email protected]] > Sent: Friday, April 20, 2012 1:59 AM > To: [email protected] > Subject: Re: Service with validate=false not getting all parameters > > > Provided all the form parameters map to certain entity(ies) , you can use > <auto-attibutes> on service definition to define all the parameters without > explicitly specifying each attribute, of-course you can explicitly > override/exclude certain parameters. > > Regards > Vikas > > On Apr 18, 2012, at 11:46 PM, Skip wrote: > >> I have a URL in a controller like this: >> >> <request-map uri="createGenericProductNumber"> >> <security https="true" auth="true"/> >> <event type="service" invoke="createGenericProductNumber"/> >> <response name="success" type="view" >> value="generatePartNumberForm"/> >> <response name="error" type="view" value="generatePartNumberForm"/> >> </request-map> >> >> >> The service is declared like this: >> >> <service name="createGenericProductNumber" engine="java" auth="true" >> default-entity-name="" >> location="com.fs.inventory.GenerateInventoryPartNumbers" >> invoke="createGenericProductNumber" >> use-transaction="true" validate="false" > >> <description> >> Create an endmill product id from the required inputs >> </description> >> <attribute name="kindId" type="String" mode="INOUT" >> optional="false"/> >> <attribute name="tableName" type="String" mode="IN" >> optional="false"/> >> <attribute name="encodeIdString" type="String" mode="IN" >> optional="false"/> >> <attribute name="partNumber" type="String" mode="OUT" >> optional="false"/> >> <attribute name="description" type="String" mode="OUT" >> optional="true"/> >> <attribute name="longDesc" type="String" mode="OUT" >> optional="true"/> >> </service> >> >> >> Note the "validate=false". This url is called from a screen that has lots >> of parameters not declared in service above like width, length, etc. None >> of these parameters are being passed to the createGenericProductNumber >> service in its context. >> >> >> I rewrote the the url like this: >> >> <request-map uri="createGenericProductNumber"> >> <security https="true" auth="true"/> >> <event type="java" path="com.fs.inventory.InventoryEvents" >> invoke="createGenericProductNumber"/> >> <response name="success" type="view" >> value="generatePartNumberForm"/> >> <response name="error" type="view" value="generatePartNumberForm"/> >> </request-map> >> >> In this case, all the parameters from the page are in the parameter map of >> the HttpServletRequest. >> >> Is there any way I can get the service engine to pass all the parameters >> from request in the context to the service and not just those in the > service >> declaration? >> >> Thanks in Advance >> Skip >> > >
