Hi all, Does anyone have a solution to this? I have exactly the same problem. For example:
<action name="ProductAction_*" method="{1}" class="jp1980.actions.ProductAction"> <result name="list">/customer/products/list_ext.jsp</result> <result name="json_list" type="json"> products, productsTotal </result> <result name="error">/error.jsp</result> <result name="success">/missing.jsp</result> </action> products is a List. If I specify products as the root, or specify no root or includeParams and return everything from my action, products is returned and populated fine in the JSON. However, if i use the includeParams as above, products is empty when I inspect the JSON. Thanks for reading and kind regards, James Gregory Slonim wrote: > > All, > > I am having a problem returning collections (or arrays) from struts > action as JSON. All collection-type data comes back empty (map, array, > etc). > > Setup: > > struts.xml > > <package name="json" extends="json-default"> > <action name="getPayPlanGradesAjaxCall" > class="com.intellidyne.rms.action.accession.AccessionAction" > method="getPayPlanGradesAjaxCall"> > <interceptor-ref name="json"> > true > </interceptor-ref> > > <result type="json"> > true > > dutyHours, > payPlanTypes > > > </result> > </action> > </package > > Action: > > public class AccessionAction extends BaseAction implements > ConversationScopeAware, ValidationAware > { > private static final long serialVersionUID = -1249579868850221888L; > > private String dutyHours; > private List<String> payPlanTypes; > > public String getDutyHours() > { > return dutyHours; > } > > public void setDutyHours(String dutyHours) > { > this.dutyHours = dutyHours; > } > > public final List<String> getPayPlanTypes() > { > return payPlanTypes; > } > > public final void setPayPlanTypes(List<String> payPlanTypes) > { > this.payPlanTypes = payPlanTypes; > } > > public String getPayPlanGradesAjaxCall() > { > dutyHours="12345"; > payPlanTypes = new ArrayList<String>(); > payPlanTypes.add("TEST1"); > payPlanTypes.add("TEST2"); > return SUCCESS; > } > } > > JSP: > > ...... > > <button dojoType="dijit.form.Button" > label="TEST" > value="Test"> > <script type="dojo/method" event="onClick"> > console.debug("Getting JSON DATA"); > dojo.xhrGet ({ > url: "getPayPlanGradesAjaxCall.html", > handleAs: "json", > load: function(response, ioArgs) { > console.debug("Returned from the call. Response > is > "+response.dutyHours); > console.debug("Returned content: > "+response.payPlanTypes); > return response; > } > }); > </script> > </button> > > The button does not do anything besides making AJAX call. Here is the > response in FF Fbug: > > {"dutyHours":"12345","payPlanTypes":[]} > > Even if I use various dojo methods (such as dojo.toJson, etc) on > response object, the collection is still empty. > I used arrays, maps, whatever. It is still empty. > > The main problem I am trying to solve is how to populate one select > from something selected in another. (typical car makes/models scenario) > > Please advise, your help is greatly appreciated. > > Greg > > > > -- View this message in context: http://www.nabble.com/JSON-plugin-0.33-and-Struts-2.1.6-%28integrated-with-Spring-2.5%29-tp22463902p25187847.html Sent from the Struts - Dev mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org For additional commands, e-mail: dev-h...@struts.apache.org