[ https://issues.apache.org/jira/browse/OFBIZ-1141?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12513389 ]
Adrian Crum commented on OFBIZ-1141: ------------------------------------ Maybe I'm missing the point, but it seems to me you could do validation checks before you call the service code - via the <permission-service> service element. The approach I use at work is to have the lower level logic assume all of its arguments are valid - validation is left to the presentation layer or somewhere higher up in the chain. > More user friendly error messages > --------------------------------- > > Key: OFBIZ-1141 > URL: https://issues.apache.org/jira/browse/OFBIZ-1141 > Project: OFBiz > Issue Type: Improvement > Affects Versions: SVN trunk, Release Branch 4.0 > Reporter: Wickersheimer Jeremy > Priority: Minor > Attachments: ofbiz-1141-example1.patch, ofbiz-1141-example2.patch > > > A lot of error messages in Ofbiz are "cryptic" for normal users. For example > sometimes a user would trigger a database foreign key violation and as a > result will have a quite big error message thrown at him. > This would happen for example when you create an Agreement then gives both a > Party Id To and a Role Type Id To that doesn't match. > In that case the error is something like: > ERROR: Could not complete the Create an Agreement > [file:/home/jeremy/bertelsmann/dgerp/applications/accounting/script/org/ofbiz/accounting/agreement/AgreementServices.xml#createAgreement] > process [problem creating the newEntity value: Exception while inserting the > following entity: > [GenericEntity:Agreement][agreementDate,null()][agreementId,10076(java.lang.String)][agreementTypeId,null()][createdStamp,2007-07-12 > 12:33:38.285(java.sql.Timestamp)][createdTxStamp,2007-07-12 > 12:33:38.283(java.sql.Timestamp)][defaultCurrencyUomId,null()][description,null()][fromDate,2007-07-12 > > 12:33:38.285(java.sql.Timestamp)][fromPartyClassGroupId,null()][lastUpdatedStamp,2007-07-12 > 12:33:38.285(java.sql.Timestamp)][lastUpdatedTxStamp,2007-07-12 > 12:33:38.283(java.sql.Timestamp)][partyIdFrom,null()][partyIdTo,Admin(java.lang.String)][productId,null()][roleTypeIdFrom,null()][roleTypeIdTo,PERSON_ROLE(java.lang.String)][statusId,null()][textData,null()][thruDate,null()][toPartyClassGroupId,null()] > (while inserting: > [GenericEntity:Agreement][agreementDate,null()][agreementId,10076(java.lang.String)][agreementTypeId,null()][createdStamp,2007-07-12 > 12:33:38.285(java.sql.Timestamp)][createdTxStamp,2007-07-12 > 12:33:38.283(java.sql.Timestamp)][defaultCurrencyUomId,null()][description,null()][fromDate,2007-07-12 > > 12:33:38.285(java.sql.Timestamp)][fromPartyClassGroupId,null()][lastUpdatedStamp,2007-07-12 > 12:33:38.285(java.sql.Timestamp)][lastUpdatedTxStamp,2007-07-12 > 12:33:38.283(java.sql.Timestamp)][partyIdFrom,null()][partyIdTo,Admin(java.lang.String)][productId,null()][roleTypeIdFrom,null()][roleTypeIdTo,PERSON_ROLE(java.lang.String)][statusId,null()][textData,null()][thruDate,null()][toPartyClassGroupId,null()] > (SQL Exception while executing the following:INSERT INTO public.AGREEMENT > (AGREEMENT_ID, PRODUCT_ID, PARTY_ID_FROM, PARTY_ID_TO, ROLE_TYPE_ID_FROM, > ROLE_TYPE_ID_TO, AGREEMENT_TYPE_ID, AGREEMENT_DATE, FROM_DATE, THRU_DATE, > DESCRIPTION, TEXT_DATA, LAST_UPDATED_STAMP, LAST_UPDATED_TX_STAMP, > CREATED_STAMP, CREATED_TX_STAMP, STATUS_ID, DEFAULT_CURRENCY_UOM_ID, > FROM_PARTY_CLASS_GROUP_ID, TO_PARTY_CLASS_GROUP_ID) VALUES (?, ?, ?, ?, ?, ?, > ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) (ERROR: insert or update on table > "agreement" violates foreign key constraint "agrmnt_tprtyrle" > Detail: Key (party_id_to,role_type_id_to)=(Admin,PERSON_ROLE) is not present > in table "party_role".)))] > It is fine for a developer who can understand that, but not for a user. > I agree that with some hacking or better design in the forms it would be > possible to avoid that kind of error, but the idea would be to be able to > catch that and replace the error we something more understandable, for > example: > ERROR: the "Party Id To" doesn't have the "Role Type To Id" you entered. > Or better: > ERROR: the "Party Id To: Admin" doesn't have the "Role Type To Id: Person". > Possible values for the Role Type are : "..." > I know that such a feature cannot be implemented in the framework directly > because errors are context sensitive, so it would have to be done in the > Service XML definition. > Perhaps some new methods could be added in simple-methods to make that task > easier ? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.