This particular case is somewhat unique.  

It is a password reset screen and in this case, the model is a User object that 
is being updated.  Depending on the selections made by the administrator in the 
password options screen, the User entity is either updated with a temporary 
password generated by the system, a static one time password specified by the 
administrator or the account set to authenticate against a LDAP system.

The administrator can specify to 1) check a temporary password which expires at 
login, 2) assign a specified password by the administrator that expires at 
login, or 3) authenticate against LDAP.  In all three cases, the action is 
responsible for taking the values from this form and using the security API to 
handle the password options accordingly and persist the user object.

The action is where the temporary (unencrypted) password from scenario 1 is 
maintained.  So under that scenario, the JSON result will serialize back out to 
the display this value along with actionErrors.  Under the other two scenarios, 
just actionErrors gets serialized back out so that the result handler can 
either display a success or failure message.

This worked in 2.1.8.1 but since upgrading to 2.2.3 it appears what is used as 
the basis of the JSON serialized object is different.  And because my User 
object contains circular dependencies to other User objects that describe who 
created or updated that User object record, the JSON result handler is just 
going in infinite loops in the database trying to serialize the model which 
isn't desired.

I choose to use model driven because the password options page that displays 
show information such as the user's name, last login and several other user 
record properties along with being initialized with the current authentication 
type state specified (LDAP vs Local Database).  But I suppose I could remove 
the ModelDriven interface implementation and reference the User bean directly 
for that to get JSON to serialize the action rather than the model unless there 
is a way to revert back via a parmeter to the result handler to use the older 
logic from 2.1.8.1 build.

Thoughts? 

-----Original Message-----
From: Martin Gainty [mailto:mgai...@hotmail.com] 
Sent: Wednesday, June 01, 2011 9:49 PM
To: Struts Users Mailing List
Subject: RE: JSON & ModelDriven


model is somehwhat analogous to the legacy struts1 formbean
action contains processing artifacts (such as public String execute())
ModelDriven more closely represents a large bean which can be 
serialized/deserialized as JSON ResultType
(application/json content-type)

what does Action contain (that Model does not contan) which you want to 
serialize as JSON?
Martin --
______________________________________________ 
Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
 
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger 
sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung 
oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem 
Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. 
Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung 
fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le 
destinataire prévu, nous te demandons avec bonté que pour satisfaire informez 
l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est 
interdite. Ce message sert à l'information seulement et n'aura pas n'importe 
quel effet légalement obligatoire. Étant donné que les email peuvent facilement 
être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité 
pour le contenu fourni.




> Subject: JSON & ModelDriven
> Date: Wed, 1 Jun 2011 16:48:58 -0500
> From: chris.cranf...@setech.com
> To: user@struts.apache.org
> 
> From what I have read; it appears that for an action that implements the
> ModelDriven interface that the JSON result type is going to attempt to
> serialized the model object to the JSON stream rather than the action.
> 
> Is there anyway to override this so that the action is what is returned
> instead of the model without changing the interface that the action
> implements?
> 
> Chris 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
> 
                                          


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to