Verständnis Beans und Taglibs

Status
Nicht offen für weitere Antworten.

newBaby

Mitglied
Hi @ ll,

ich arbeite grade das Buch Core Sevlets und JavaServer Pages durch.

Wie greife ich auf in taglibs auf ein Session Objekt (Bean) zu? Ich habe es derzeit über die JSP gelöst, hätte dies aber lieber in der Taglib.

Hier ein simles Beispiel zur Veranschulichung:

Das Bean was nach MVC Mein Modell darstellt.

Code:
package de.asdf.test.tagTest;

public class Mybean {
private String sprachschalter;
	
	public String getSprachschalter() {
		return sprachschalter;
	}
	
	public void setSprachschalter(String sprachschalter) {
		this.sprachschalter = sprachschalter;
	}
}

Hier die JSP Seite:


Code:
<%@ page import="de.asdf.test.tagTest.Mybean" %> 
<jsp:useBean 	id		="lrm" 
				class	="de.blassmann.test.tagTest.Mybean" 				
				scope	="session">		 

	<jsp:setProperty 	name		="lrm" 
						property	="sprachschalter" 
						value		="de"					
						/>						

</jsp:useBean>
<%@ taglib uri="/WEB-INF/tagBeanVerbindung.xml" prefix="tagBean" %>



<tagBean:verbindung  tagSprachschalter=<%=lrm.getSprachschalter()%>' />
 //hier findet der Zugriff statt. 


<%=lrm.getSprachschalter()%>

Das ist mein tagLib:
Code:
package de.asdf.test.tagTest;

import java.io.IOException;
import java.math.BigInteger;

import javax.servlet.ServletRequest;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import coreservlets.Primes;

public class myTaglib extends TagSupport {
	private String tagSprachschalter;
	
		
	/**
	 * @param tagSprachschalter the tagSprachschalter to set
	 */
	public void setTagSprachschalter(String tagSprachschalter) {
		this.tagSprachschalter = tagSprachschalter;
		if(tagSprachschalter.equalsIgnoreCase("de")){
			tagSprachschalter="[b]deutsch[/b]";
		}else{
			tagSprachschalter=null;
		}
	    try {
	    	JspWriter out = pageContext.getOut();
	        out.print(tagSprachschalter);
	        System.out.print("ich bin myTaglib.setTagSprachschalter()");
	    } catch(IOException ioe) {
	        System.out.println("Error generating prime: " + ioe);
	    }	
	   
	}

	  public int doStartTag() {
		    try {
		      JspWriter out = pageContext.getOut();		      
		      out.print(tagSprachschalter);
		    } catch(IOException ioe) {
		      System.out.println("Error generating prime: " + ioe);
		    }
		    return(EVAL_BODY_INCLUDE);
		  }
		  
}


Damit es vollständig ist noch die tld:

Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
 PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
 "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>tagBean</shortname>
  <info>
    A tag library from Core Servlets and JavaServer Pages,
    [url]http://www.coreservlets.com/[/url].
  </info>
  <tag>
    <name>verbindung</name>
    <tagclass>de.blassmann.test.tagTest.myTaglib</tagclass>
    <bodycontent>JSP</bodycontent>
    <info>Outputs servletFeld.</info> 
    <attribute>
      <name>tagSprachschalter</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>  
</taglib>



So, wie muss ich die Taglib Class verandern um aus dem Bean den Sprachschalter zu erhalten? Mir erscheint es komisch das dies wie bei mir in der JSP passiert. Ist das die richtige Vorhehensweise?


Grüsse newBaby

PS Ich habe schon danach gesucht aber nichts gefunden.



.
 

Ralf Ueberfuhr

Bekanntes Mitglied
Naja, kommt drauf an. In der JSP ist es doch ok. So ist dein Tag unabhängig von Namen und Ort der Bean. Du kannst da auch gerne Expression Language verwenden (ab JSP 2.0), um XML-komform zu sein.

Wenn du das trotzdem im Tag auslesen möchtest, dann per

Code:
Mybean mybean = (Mybean)pageContext.getAttribute("lrm", PageContext.REQUEST_SCOPE);

EDIT: Du verwendest den Begriff taglib falsch. Du hast einen Custom Tag. Taglib ist die Tag Library, in der deine Custom Tags definiert werden.
 

newBaby

Mitglied
hi masseur81,



Danke für die schnelle aufschlussreiche Auskunft.

> Naja, kommt drauf an. In der JSP ist es doch ok. So ist dein Tag unabhängig von Namen und Ort der Bean.

Scriptlet in jsp - ich dachte die Tage sind vorbei? Ich habe gelesen das das vermieden werden soll.

Ist es nicht ein Vorteil wenn die Aufbereitung zur Ausgabe in der JavaClasse geschieht, dann habe ich doch die Möglichkeit die im Bean vorgehalten Daten zu jeder Zeit in jeder jsp auszugeben. Wenn ich es in der jsp aufbereite, bin ich an die jsp als Ausgabeseite gebunden und kann es zb nur in der index.jsp und nicht auf der xyz.jsp Seite Ausgeben.

zB mein Bean liefert mir eine Gruppe von Datensätzen die als radio o. checkbox dargestellt werden soll. Ich bin bis jetzt davon ausgegangen, das in der Classe auf die das Tag Zeigt, der HTML code zusammengesetzt wird, Incl. Style Angaben.


Zu dem wollte ich in der JavaClasse festlegen welche teile aus der Modell(Bean) ausgegeben wird, das Bean soll doch nur die Daten bereitstellen und Aufnehmen.






> So ist dein Tag unabhängig von Namen und Ort der Bean.

Ich sehe den Vorteil, einer Aufbereitung in der jsp nicht. Bzw ich vertehe nicht wie du das meinst, das mit dem Namen und Ort. Ist es nicht so, das ich einfach ein neues tag in der xml festlege und nochmals auf das Bean Zugreife wenn es nochmals verwenden will?






> EDIT: Du verwendest den Begriff taglib falsch. Du hast einen Custom Tag. Taglib ist die Tag Library, in der deine Custom Tags definiert werden.

OK :(, Hab ich das Richtig verstanden, ich wiederhole in meinen Worten?

Custom tags werden in der XML (Descriptor, Tag-Bibliothek = TagLib) deffiniert, und enthällt ein Sammlesurium der (Custom)Tags.

Die JavaClasse, auf die aus der XML verwiesen wird - Hat das Kind auch einen Namen? Im Buch heist es Tag-Handler-Klasse, das klingt so eingedeutscht.




Nochmal Danke und
grüsse newBaby


PS hehe :) $(Expression Language), feine Sache, das habe ich auch nicht gekannt.




.
 

newBaby

Mitglied
@masseur81

ich versuche jetzt schon seid 3 tagen in der myTaglib auf das bean zuzugreifen

Code:
Mybean mybean = (Mybean)pageContext.getAttribute("lrm", PageContext.REQUEST_SCOPE);


myBean ist null, logisch woher soll den die klasse/methode auch wissen das ich das bean aus der aktuellen session meine.

Das muss ich irgenwie bekannt machen, und die refferenz auf das bean bekomme ich nicht hin,

Sei doch so net und gib mir ein wenig mehr code als die eine Zeile.

Insbesondere wie ich den bezug myTaglib.class -> Mybean.class herstelle bzw übergebe.


Viele grüsse
newBabay




.
 

newBaby

Mitglied
Hat sich erledigt. Habe die ganze zeit auf ein anders Bean zugegriffen das war null - grrr

Das war mal eine schwere Geburt.

Grüsse newBabay
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Grundlegendes Verständnis - Beans, JSP und Servlets Allgemeines EE 3
J Verständnis Liferay6.2 + JSP/JSF + EJB + CDI auf JBOSS7.1 Allgemeines EE 0
S Problem mit EJB Verständnis Allgemeines EE 4
F Verständnis-Frage zu den vielen Frameworks Allgemeines EE 17
D JSF CDI @Inject No eligible for injection beans are found Allgemeines EE 8
J CDI fähige Beans und @ Inject Allgemeines EE 3
I Session löschen in Bean (Session Beans) Allgemeines EE 1
V Java EE 7 CDI, annotations und beans Allgemeines EE 1
L JSP: Dynamischer Content mit Beans für einen Konfigurator? Allgemeines EE 0
G JSF Beans nicht angezeigt Allgemeines EE 2
D Beans vs. managed Beans vs. backing Beans Erklärung Allgemeines EE 6
Java.getSkill() Anwendung Beans für Formulare Allgemeines EE 5
Spin Ant - Java Beans umsetzen Allgemeines EE 4
V "null" durch NICHTS ersetzen jsp und java beans Allgemeines EE 3
D Frage zum Statefull Session Beans Lebenszyklus Allgemeines EE 3
K EJB Enterprise Java Beans Allgemeines EE 32
F Beans Allgemeines EE 6
A Warum werden die Managed Beans nicht erkannt? Allgemeines EE 3
M Müssen Backing Beans serialisierbar sein? Allgemeines EE 7
N JSF - Frage zu Managed Beans und DataTable Allgemeines EE 4
S In einer Bean-Methode an ndere Beans kommen Allgemeines EE 7
S EJB Entity Beans -> CMP Allgemeines EE 11
S JSP - Veständnisproblem mit Beans Allgemeines EE 9
G Struts beans Allgemeines EE 7
G DB Connection mit Java Beans Allgemeines EE 6
P Wie Log4J in JSP's, Beans und Servlets am besten einbinden Allgemeines EE 2
T GUI-Nachrichten mit Message Driven Beans? Allgemeines EE 6
G Persistenz-Entscheidung (Entity Beans, Hibernate, JDBC) Allgemeines EE 12
T XML, Beans, Datenbank. Kann mir jemand helfen? Allgemeines EE 5
K Enterprise Java Beans Allgemeines EE 7
TRunKX Mein Tomcat findet die Beans nicht was nu? Allgemeines EE 2
G Listenfeld mit Struts und Beans realisieren Allgemeines EE 4
T Verständnisfrage zu Beans Allgemeines EE 8
K JSF - Zugriff auf Managed Beans Allgemeines EE 2
S J2EE, Java - Beans, Datenbankzugriff, JSP Allgemeines EE 7
S [JSP Beans]Variable auslesen Allgemeines EE 3
J Java Beans Allgemeines EE 7
A Brauche ich J2EE für Beans? Allgemeines EE 9
M Entity Beans: Rückgabe von Collectionen an Client Allgemeines EE 2
P Session Beans importieren Allgemeines EE 2
T JSP: Wo liegen die Beans Allgemeines EE 5
F Wie TagLibs in web.xml eintragen? Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben