struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Abendroth (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4176) Struts2 JSON Plugin: Send Map with Strings as Key to JSON Action is ignored, Numeric Keys will work and mapped
Date Wed, 02 Mar 2016 17:59:18 GMT

    [ https://issues.apache.org/jira/browse/WW-4176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15176099#comment-15176099
] 

Stefan Abendroth commented on WW-4176:
--------------------------------------






Vielen Dank für Ihre Nachricht. Ich bin voraussichtlich am 3. März wieder im Büro. Thank
you for your message. I am not in the office until march 3.  Best regards Stefan Abendroth

> Struts2 JSON Plugin: Send Map with Strings as Key to JSON Action is ignored, Numeric
Keys will work and mapped
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: WW-4176
>                 URL: https://issues.apache.org/jira/browse/WW-4176
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - JSON
>    Affects Versions: 2.3.14.3
>         Environment: Tomcat6, Struts 2.3.14.3,JSON Plugin 2.3.14.3,jquery
>            Reporter: Stefan Abendroth
>            Assignee: Lukasz Lenart
>             Fix For: 2.5
>
>         Attachments: WW-4176-proposal.patch
>
>
> Sending Map from javascript/jsp to JSON Action, when the Keys are numeric everything
works, when the keys are Strings then these entries are thrown away while the mapping process
in the JSON Action takes place.
> Important note: If i create a map in the JSON Action and send it to the client everything
is ok.
> alert which shows the Server generated JSON:
> {noformat}
> ServerJSON{"1":"1","2":"ANOTHERVALUE","ANOTHERKEY":"1","KEY":"VALUE"}
> {noformat}
> If i look into the sended data from javascript side in Eclipse i see in debug mode:
> {noformat}
> this=>myJSONMap:{2=[Ljava.lang.String;@3caf7a1f, 23=[Ljava.lang.String;@247aa859}
> {noformat}
> Alert shows on client side:
> {noformat}
> ClientJSON{"2":["ANOTHERVALUE"],"23":["1"]}
> {noformat}
> Hope it's clear where the problem is. Bug or misunderstood anything?
> Would like to have a List of keys,values where the keys can be String/Long/Int and the
values can be String/Long/int.
> The direction Server generated Map=>JSON is ok, sending the same from client side
will lose the entries with a String key.
> Further i tried also to specify my Map like
> {code:java}
> private Map<String, String> propertyValueMap = new LinkedHashMap<String, String>();

> {code}
> and set the getters/setters but don't work either.
> Here is a part of my code:
> JSP PAGE:
> {code:html}
> <form action="" id="testForm1">
> testForm1<input type="submit"/>
> </form>
> <script>
> $("#testForm1").submit(function(event){
> event.preventDefault(); //Cancel the default action (navigation) of the click.
> var data={"1":"1","2":"ANOTHERVALUE","ANOTHERKEY":"1","KEY":"VALUE"};
> var sentData={};
> sentData["myJSONMap"]=data;
> $.getJSON("<s:url namespace="/ajax" action="testMap"/>", sentData ,function(data3)
{
> alert("Server generated JSON"+JSON.stringify(data3.mymap));
> alert("Client generated JSON"+JSON.stringify(data3.myJSONMap));
> });
> });
> {code}
> JSON Action config:
> {code:xml}
> <struts>
> <package name="PIM_JSONDataPackage" namespace="/ajax" extends="struts-default,json-default">
> <action name="testMap" method="testMap" class="eu.mtd.actions.JSON_DropDownPropertyValuesAction">
> <result type="json" />
> <param name="noCache">true</param>
> </action>
> </package>
> </struts>
> {code}
> JSON Action
> {code:java}
> public class JSON_DropDownPropertyValuesAction extends ActionSupport{
> 	private static final long serialVersionUID = 1L;
> 	private Map session;
>     @SuppressWarnings("rawtypes")
> 	private Map mymap = new HashMap();
>     @SuppressWarnings("rawtypes")
> 	private Map myJSONMap = new HashMap();
> public JSON_DropDownPropertyValuesAction(){}
> 	@SuppressWarnings("unchecked")
> 	public String testMap(){
> 		mymap.put("KEY", "VALUE");
> 		mymap.put("1", "1");
> 		mymap.put("ANOTHERKEY", "1");
> 		mymap.put("2", "ANOTHERVALUE");
> 		//Creates JSON: {"1":"1","2":"ANOTHERVALUE","ANOTHERKEY":"1","KEY":"VALUE"}
> 		return SUCCESS;
> 	}
> public String execute() {
>         return SUCCESS;
> 	}
> 	@SuppressWarnings("rawtypes")
> 	public Map getMymap() {
> 		return mymap;
> 	}
> 	@SuppressWarnings("rawtypes")
> 	public void setMymap(Map mymap) {
> 		this.mymap = mymap;
> 	}
> 	
> 	@SuppressWarnings("rawtypes")
> 	public Map getMyJSONMap() {
> 		return myJSONMap;
> 	}
> 	
> 	@SuppressWarnings("rawtypes")
> 	public void setMyJSONMap(Map myJSONMap) {
> 		this.myJSONMap = myJSONMap;
> 	}
> 	public Map getSession() {
> 		return session;
> 	}
> 	public void setSession(Map session) {
> 		this.session = session;
> 	}
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message