# Syntax in JSP-Seiten



## gimli6 (23. Feb 2005)

Hallo!

Da das folgende Thema a bisserl schwammig ist, hab ich es trotzdem mal hier gepostet.

Ich moechte in meiner JSP-Seite einen Schleifenzaehler einbauen. Dieser Schleifenzaehler soll mir bei jedem Duchlauf eine html-Spalte generieren, in der ein Dropdownmenue vorhanden sein soll.

Der Code fuer die Realisierung koennte so aussehen, wenn er funktionieren wuerde:

```
<% for (int k = 0; k <= columcounter; k++ ) { 
<td>        
    <html:select property="allerlei">
        <html:optionsCollection property="allerlei"
                           label="bezeichnung"
                           value="nummer"/>
        </html:select>
</td>
}; %>
```

Wie schon erwaehnt funktioniert das ned. Der Compiler mosert da rum, weil er gerne in der ersten und in der vorletzten Zeile ein ";" haben moechte. 

Naja, meine "eigentliche" Loesung sieht ja so aus:

```
<% for (int k = 0; k <= j; k++) {
out.println("<td>"); 
out.println("<html:select property="allerlei">");
out.println("<html:optionsCollection property="allerlei" ");
out.println("label="bezeichnung" ");
out.println("value="nummer"/>");
out.println("</html:select>");       
out.println("</td>");
}; %>
```

Aber da stimmt wohl was anderes ned.
Wo liegt hier der Fehler und wie muss ich was aendern, damit es funktioniert? Gaensefuesschen maskieren mit "\" funktioniert auch ned!

Danke schon mal vorab fuer jegliche Hilfe![/code]


----------



## KSG9|sebastian (23. Feb 2005)

der ";" nach der schließenden Klammer bei der for-Schleife muss weg. und, was machst du mit "<td>" ? willst du ein html element ausgeben ?


----------



## gimli6 (23. Feb 2005)

KSG9|plak hat gesagt.:
			
		

> der ";" nach der schließenden Klammer bei der for-Schleife muss weg. und, was machst du mit "<td>" ? willst du ein html element ausgeben ?



Ja, ich moechte gerne html-elemente mit ausgeben, bzw. halt auch Beans. 
Aber bei solchen Zeilen mosert der Compiler auch rum:

```
out.println("label="bezeichnung" ");
```
Fehlermeldung : ')' expected

Also das '" "' ist nicht schoen, aber mit '\" "' funktionierts auch ned!  :x


----------



## gimli6 (23. Feb 2005)

Also wenn ich es so mache:
	
	
	
	





```
<% for (int k = 0; k <= j; k++ ) { 
out.println("<td>"); 
out.println("<html:select property=\"allerlei\"> ");
out.println("<html:optionsCollection property=\"allerlei\" ");
out.println("'label=\"bezeichnung\" ");
out.println("'value=\"nummer\"/> ");
out.println("</html:select>");       
out.println("</td>");
} %>
```

kann ich zwar die JSP-Seite anzeigen ohne Fehlermeldung, jedoch wird mir das Dropdownmenue nicht dargestellt.
Im HTML-Quelltext wird mir obiges wie geschrieben ausgegeben, jedoch nicht interpretiert, also dessen Inhalt zurueckgeliefert.

-------------------------------

So, andere Idee:
Kann ich obiges auch mit <logic:iterate .. loesen?
Kann ich dem iterate eine feste Schleifengroesse mitgeben, die er abarbeiten soll? Und was muss dann evtl. fuer eiine ID angegeben werden, wenn ich keine habe? Moechte ja nur zaehlen.
Hab dazu noch nix gefunden, aber thoeretisch waers zumindestens ein guter Ansatz!  :roll:


----------



## daLenz (24. Feb 2005)

hallo, nur um kurz auf den erstes beitrag zurückzukommen. hast du nur vergessen die %> & <% jeweils zu schliessen (hier beim eintippen), oder hast du sie wegelassen(in der jsp?)

ansonsten müsstest du diese noch schliessen:


```
<% for (int k = 0; k <= columcounter; k++ ) {  %>

..................

<% }; %>
```

greetz


----------



## gimli6 (24. Feb 2005)

Moin Moin!

Also eigentlich habe ich es nicht vergessen.
Ich wollte alles was innerhalb der for-Schleife steht ausgeben, darum habe ich die Klammern nicht geschlossen.


----------



## daLenz (24. Feb 2005)

ja desshalb funktioniert es wenn du es mit out.println machst, aber nicht, wenn du es mit jsp-syntax versuchst, dann müsstest du die klammern eben auch schliessen, so dass nur java-code in <% steht %  also für dein bsp.


```
<% for (int k = 0; k <= columcounter; k++ ) { %>

<td>        
    <html:select property="allerlei"> 
        <html:optionsCollection property="allerlei" 
                           label="bezeichnung" 
                           value="nummer"/> 
        </html:select> 
</td> 

<%}; %>
```


----------



## KSG9|sebastian (24. Feb 2005)

```
<% for (int k = 0; k <= j; k++ ) { 
out.println("<td>"); 
out.println("<html:select property=\"allerlei\"> "); 
out.println("<html:optionsCollection property=\"allerlei\" "); 
out.println("'label=\"bezeichnung\" "); 
out.println("'value=\"nummer\"/> "); 
out.println("</html:select>");        
out.println("</td>"); 
} %>
```
Lies dir mal bitte n paar tutorials durch, das ist voll der Misch-Masch zwischen HTML, Struts-Taglibs, JSP-Tags u.s.w.



```
out.println("label="bezeichnung" ");
```
Und dann würd ich dir empfehlen mal n bissl Java-Grundlagen zu studieren!

Wenn du nur "label=bezeichnung" ausgeben willst dann so


```
out.println("label=bezeichnung");
```

Wenn bezeichnung ne Variable ist dann so


```
String bezeichnung = "Das ist eine Bezeichnung";
out.println("label="+bezeichnung);
```

Wenn label eine Variable ist...


```
String label = "Das ist ein Label";
out.println(label+"=bezeichnung");
```

Und wenn beides Variablen sind...


```
String bezeichnung = "Das ist eine Bezeichnung";
String label = "Das ist ein Label";
out.println(label+"="+bezeichnung);
```


----------



## gimli6 (24. Feb 2005)

daLenz hat gesagt.:
			
		

> ja desshalb funktioniert es wenn du es mit out.println machst, aber nicht, wenn du es mit jsp-syntax versuchst, dann müsstest du die klammern eben auch schliessen, so dass nur java-code in <% steht %  also für dein bsp.
> ....



Ja voll Suppi! Es funktioniert!  :shock: 
Vielen Dank!  :toll:


----------

