Hi
You will have to create your own ComponentEventResultProcessor and
contribute it in your AppModule class :
public void contributeComponentEventResultProcessor(
MappedConfiguration<Class, ComponentEventResultProcessor>
configuration) {
configuration.addInstance(net.sf.json.JSONObject.class,
YouProcessor.class);
}
2010/7/8 Borut Bolčina <[email protected]>
> Hello,
>
> Is it possible to configure return types?
>
> In one of my event methods I was trying to return net.sf.json.JSONObject
> instead of org.apache.tapestry5.json.JSONObject and got this error message:
>
> [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed
> with uncaught exception: A component event handler method returned the
> value
>
> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
> Trzin"}. Return type net.sf.json.JSONObject can not be handled. Configured
> return types are java.lang.Class, java.lang.String,
> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
> org.apache.tapestry5.ajax.MultiZoneUpdate,
> org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONObject,
> org.apache.tapestry5.runtime.Component,
> org.apache.tapestry5.runtime.RenderCommand.
> org.apache.tapestry5.runtime.ComponentEventException: A component event
> handler method returned the value
>
> {"birthDay":"","birthMonth":"","birthYear":"","gender":"male","postOfficeNumberAndName":"1236
> Trzin"}. Return type net.sf.json.JSONObject can not be handled. Configured
> return types are java.lang.Class, java.lang.String,
> org.apache.tapestry5.Link, org.apache.tapestry5.StreamResponse,
> org.apache.tapestry5.ajax.MultiZoneUpdate,
> org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONObject,
> org.apache.tapestry5.runtime.Component,
> org.apache.tapestry5.runtime.RenderCommand. [at context:Index.tml, line 20]
>
>
> My event method:
>
> @OnEvent(component = "email", value = "blur")
> public JSONObject checkIfUserWithThisEmailExists(String value) {
> UserData userData = new UserData();
> if(value.equals("[email protected]")) {
> userData.setPostOfficeNumberAndName("1236 Trzin");
> userData.setGender("male");
> } else {
> logger.info("Bob does not exist.");
> }
> JSONObject jsonObject = (JSONObject)
> JSONSerializer.toJSON(userData);
> return jsonObject;
> }
>
> The reason I used net.sf.json.JSONObject is because it offers great
> conversion and construction capabilities to/from JavaBeans/XML/JSON. Have a
> look at http://json-lib.sourceforge.net/snippets.html.
>
> Is it possible or do I have to construct the org.apache.tapestry5.json.JSON
> object by hand?
>
> Thanks,
> Borut
>
--
Regards,
Christophe Cordenier.
Committer on Apache Tapestry 5
Co-creator of wooki @wookicentral.com