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.
Hier die JSP Seite:
Das ist mein tagLib:
Damit es vollständig ist noch die tld:
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.
.
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.
.