# [JSP] Custom Tag



## clemson (11. Aug 2005)

Hallo!

Folgendes: Ich habe eine Klasse *Order*, welche einen Auftrag repräsentiert (ein Auftrag beinhaltet einen String *title*, String *order_number* und eine String *notes*). Ich möchte nun, einen solchen Auftrag auf einer JSP Seite ausgeben lassen.

Realisieren möchte ich das ganze mittels custom tags. Das ganze soll dann folgendermaßen funktionieren:

showorder.jsp

```
<% Order order = new Order("titel","auftrag_001","keine notes"); %>

<odm:order id="o" order="<$= order %>" >
	Titel: <odm:orderproperty name="o" property="title" />

	Auftragsnummer: <odm:orderproperty name="o" property="order_number" />

	Notes: <odm:orderproperty name="o" property="notes" />
</odm:order>
```

Meine Frage ist nun, wie ich das realisiere, dass ich innerhalb des Tags <odmrderproperty> zugriff auf das Objekt habe, welches einen Auftrag repräsentiert. in diesem Fall order...

Ich habe schon ein bisschen gegoogelt und ich glaube das stichwort das ich brauche heisst scripting variable oder so..

kann mir jemand bitte sagen, wie ich das realisieren kann?


----------



## Gast (11. Aug 2005)

Schonmal was von Beans gehört? So eine Bean musst du entweder in der Session oder im Request ablegen.

Für die Darstellung kannst du dann Standard Tags nehmen (JSTL).


----------



## clemson (11. Aug 2005)

`hmm, ich möchte das ganze aber mit meinen custom tags regeln...

und es muss gehen (siehe logic:iterate tag)


----------



## KSG9|sebastian (12. Aug 2005)

> und es muss gehen (siehe logic:iterate tag)


das sind struts-taglibs, aber Gast hat irgendwie recht, warum mit nem eigenen Tag ?


----------



## Bleiglanz (12. Aug 2005)

na entweder als Attribut deines Tags oder global aus dem JSPContext holen



> abstract  java.lang.Object 	getAttribute(java.lang.String name)
> Returns the object associated with the name in the page scope or null if not found.
> abstract  java.lang.Object 	getAttribute(java.lang.String name, int scope)
> Return the object associated with the name in the specified scope or null if not found.
> ...


----------



## clemson (12. Aug 2005)

KSG9|plak hat gesagt.:
			
		

> das sind struts-taglibs, aber Gast hat irgendwie recht, warum mit nem eigenen Tag ?



nun ja, ich würd das gerne mal ausprobieren, und ausserdem kann ich es dann individuell an meine anforderungen anpassen...

kann mir vielleicht jemand kurz erläutern, wie das bei dem iterate tag gemacht wird?


----------



## KSG9|sebastian (12. Aug 2005)

iterate ist ein StrutsTag

http://struts.apache.org/userGuide/struts-logic.html#iterate


----------



## clemson (12. Aug 2005)

und wie haben die von struts das implementiert? wurde dabei eine scripting variable verwendet?


----------



## KSG9|sebastian (14. Aug 2005)

Soll ich mir die Sourcen für dich anschauen ? ;D
Guckst du hier: http://ftp.uni-erlangen.de/pub/mirrors/apache/struts/source/struts-1.2.7-src.zip

Das ist struts-1.2.7. Sourcecode. Da schaust du dir die struts-logic.tld an. Dort drinen gibt es nen Verweis auf die TagHandler-Klasse. Dann suchst du dir und schaust sie an, verstehst sie und baust dir dein eigenes Tag ;D


----------



## KSG9|sebastian (14. Aug 2005)

Oh..ich hab soeben ein schönes Tutorial gefunden, in dem Erklärt wird wie man CustomTags erstellt. Einfache Tags, Tags mit parametern, Tag mit iterationen u.s.w.


Hier gehts direkt zum TagIterate-Tutorial: http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPTags6.html


----------



## clemson (14. Aug 2005)

KSG9|plak hat gesagt.:
			
		

> Hier gehts direkt zum TagIterate-Tutorial: http://java.sun.com/webservices/docs/1.0/tutorial/doc/JSPTags6.html



klingt interessant! sehr fein, danke!!


----------

