On Fri, 20 Aug 2010, ABorka wrote:

...snip...

Exceptions are usually caught and transformed to the correct response.
I coded an event that allows to influence this process.

Michael.

Yes, the ones raised within FCL-web are caught. I was thinking about the ones raised within the developer's code, when handling the actions, or checking the user input from form submit, etc. For example if I have a login form and ExtJS submits it to the server, but the login or password didn't match, we need to reply with a success=false and an error message in a proper response format.

I have the same kind of thing. I just do a

  Raise Exception.Create('Username and password do not match');

fcl-web catches it and returns a proper error response to the browser.

I was thinking there could be something available for the developers to help format this response properly to ExJS.

There is no need. Just raise the exception. FCl-web takes care of the rest.

If you want to do things manually, you can use

function CreateJSONErrorObject(Const AMessage : String; Const ACode : Integer) 
: TJSONObject;

// Create a JSON RPC 2 error response object containing an 'Error' object.
// Result is of type TJSONErrorObject
function CreateJSON2ErrorResponse(Const AMessage : String; Const ACode : 
Integer; ID : TJSONData = Nil; idname : TJSONStringType = 'id' ) : TJSONObject;
function CreateJSON2ErrorResponse(Const AFormat : String; Args : Array of 
const; Const ACode : Integer; ID : TJSONData = Nil; idname : TJSONStringType = 
'id') : TJSONO

These functions from fpjsonrpc.pp return an object and you can do

Response.Content:=MyErr.asJSON;

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to