Zum Inhalt springen

JSF + Bean + eigener Tag


maddin

Empfohlene Beiträge

Hi,

ich habe ein - hoffentlich kleines Problem - mit einer JSF Seite.

Ich habe mir dafür ein eigenes Tag definiert. Dazu habe ich die folgende Klasse geschrieben


public class Rating extends TagSupport {


	private float rating = 0.0f;

	private int max = 5;

	private String full = null;

	private String half = null;

	private String none = null;



	@Override

	public int doEndTag() throws JspException {

		try {

			JspWriter out = pageContext.getOut();

			int n = 0;

			for (int i = 0; i < (int) rating; i++ ) {

				out.write("<img src=\"" + full + "\" />");

				n++ ;

			}

			if ((rating - (int) rating) >= 0.5) {

				out.write("<img src=\"" + half + "\" />");

				n++ ;

			}

			while ( ++n <= max) {

				out.write("<img src=\"" + none + "\" />");

			}


		} catch (Exception e) {}

		return EVAL_PAGE;

	}


	// Getter und Setter

}

Dazu die passende TLD

<?xml version="1.0" encoding="UTF-8"?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> 

  <tlib-version>1.0</tlib-version>

  <short-name>jsp4</short-name>

  <uri>/intech/rating</uri>

  <tag>

  	<name>rating</name>

  	<tag-class>intech.Rating</tag-class>

  	<body-content>JSP</body-content>

  	<attribute>

  		<name>rating</name>

  		<required>true</required>

  		<rtexprvalue>true</rtexprvalue>

  	</attribute>

  	<attribute>

  		<name>max</name>

  		<required>false</required>

  		<rtexprvalue>true</rtexprvalue>

  	</attribute>

  	<attribute>

  		<name>full</name>

  		<required>true</required>

  		<rtexprvalue>true</rtexprvalue>

  	</attribute>

  	<attribute>

  		<name>half</name>

  		<required>true</required>

  		<rtexprvalue>true</rtexprvalue>

  	</attribute>

  	<attribute>

  		<name>none</name>

  		<required>true</required>

  		<rtexprvalue>true</rtexprvalue>

  	</attribute>

  </tag>

</taglib> 

Und die TLD in die web.xml eingebunden

  <jsp-config>

  	<taglib>

  		<taglib-uri>/intech/rating</taglib-uri>

  		<taglib-location>/WEB-INF/tlds/rating.tld</taglib-location>

  	</taglib>

  </jsp-config>

Das Tag soll eine Wertung in Form von vollen, halben und leeren Sterne anzeigen. Also: z.B. max = 5, rating = 3,5, full, half, none entsprechnd die URI zu den Bildern der halben, vollen, leeren Sterne würde drei volle Sterne, einen halben und einen leeren anzeigen. Das Tag nutze ich nun in einer JSF dataTable.

		<h:dataTable value="#{search.searchResults}" var="list" rowClasses="odd,even" styleClass="dataTable">

			<!-- ... -->

			<h:column>

				<f:facet name="header">

					<h:outputText value="Bewertung" />

				</f:facet>

				<i:rating rating="#{list.rating}" full="../img/fullstar.png" half="../img/halfstar.png" none="../img/nostar.png" />

			</h:column>

		</h:dataTable>


Als wert für das Attribut rating möchte ich den Wert in meiner Datenquelle nutzen. Ich habe dies ähnlich versucht, wie z.B. beim outputText, also #{list.rating}. Allerdings wird dieser Ausdruck nicht ausgewertet und ich bekomme einen java.lang.NumberFormatException: For input string: "#{list.rating}"

Die naheliegende Frage ist nun, was mache ich falsch?

Wenn ich anstatt #{list.rating} z.B. 3 einsetzte zeigt das Tag das gewünschte Verhalten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...