Zum Inhalt springen

JSF + Bean + eigener Tag


Empfohlene Beiträge

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...