# Tomcat Servlet POST Daten als Array



## PhantomXXL (9. Mrz 2007)

also ich hab im html formular das hier:


```
<tr>
				  <td heigth="30">&</td>
                  <td heigth="30"><input name="kontakttyp[0]" type="checkbox" value="23" checked>Jugend-Anbieter</td>
                </tr>
                <tr>
				  <td heigth="30">&</td>
                  <td heigth="30"><input name="kontakttyp[1]" type="checkbox" value="22" checked>Jugend-Einrichtung</td>
                </tr>
```

nun is die frage wie les ich das ganze im tomcat aus?

ich habs so versucht:


```
String[] kontakttyp=ServletUtilities.getStringParameters(esd.request,"kontakttyp","0");
		for(int i=0;i<kontakttyp.length;i++) {
			echo(esd,"\n"+i+"-"+kontakttyp[i]);
		}
```

das ist die funktion in der ServletUtilities Klasse:

```
public static String[] getStringParameters(HttpServletRequest request,
			String paramName,
			String defaultValue) {
	  String[] paramString = request.getParameterValues(paramName);
	  if( paramString==null ) {
		  paramString = new String[1];
		  paramString[0] = defaultValue;
	  }
	  return(paramString);
  }
```

nun gibt er mir aber halt immer den standardwert zurück (also ausgabe "\n0-0") das heisst er liest die post daten nicht richtig ein, aber wie muss ich das ganze anpassen damit er es einliest?


----------



## PhantomXXL (9. Mrz 2007)

```
Enumeration bla=esd.request.getParameterNames();
		while(bla.hasMoreElements()) {
			String blubb=(String) bla.nextElement();
			echo(esd,"\n"+blubb);
		}
```

hab mal das erweitert und bekomm da zurück:


> aktion
> kontakttyp[0]
> speicherart
> eltern_id
> ...



jetzt diese enumeration durchlaufen lassen und dann vergleichen ob der anfang das selbe ist.. hat irgendwie was von workaround :/ gibt doch bestimmt ne bessere lösung


----------



## PhantomXXL (9. Mrz 2007)

```
public static String[][] getStringParameters(HttpServletRequest request,
			String paramName,
			String defaultValue) {
	  
	  	String[][] paramString = new String[1][2];
		Enumeration allParams=request.getParameterNames();
		
		int i=0;
		while(allParams.hasMoreElements()) {
			String paramNameEnum=(String) allParams.nextElement();			
			if(paramNameEnum.startsWith(paramName) && paramNameEnum.indexOf('[')>0 && paramNameEnum.indexOf(']')==paramNameEnum.indexOf(']')) {
				if(i>0) paramString=NewArray(paramString,1);
				paramString[i][0]=paramNameEnum.substring(paramNameEnum.indexOf('[')+1, paramNameEnum.indexOf(']'));
				paramString[i][1]=getStringParameter(request,paramNameEnum,"");
				i++;
			}
		}
		if(i==0) {
			paramString[0][0]="none";
			paramString[0][1]=defaultValue;			
		}		
		return paramString;
  }
```

so das funktioniert jetzt zwar, aber is halt nicht unbedingt die eleganteste lösung, hat jemand vielleicht ne bessere Idee?

speziel weil ich key und wert als [0] und [1] verwende, weil der key ja auch name oder  völlig durcheinander gewürfelt sein könnte :/


----------

