PrimeFaces - selectOneMenu

fsicher

Bekanntes Mitglied
Hallo allerseits

Habe mit selectOneMenu Probleme und werde daraus nicht wirklich schlau ...

Ich möchte Abos verwalten, wobei (um es einfach zu halten) ein Abo die Bezeichnung (Name), das Start- und Endjahr (Gültigkeit) hat. Das Start- und End-Jahr müssen mit Hilfe eines 'selectOneMenu' ausgewählt werden können (der Range (delta) wird an sich dynamisch eingelesen etc.).

Nun benimmt sich das ganze etwas merkwürdig ...

Abo:
Java:
@ManagedBean(name = "aboBean")
@SessionScoped
public class Abo implements Serializable {

	private static final long serialVersionUID = 8405305032244504596L;

	private int id;
	private String name;
	private int jahrVon;
	private int jahrBis;

	private Jahr selectedYearVon;
	private Jahr selectedYearBis;



	private List<Jahr> jahrListe = HelperService.getInstance().getAllJahr();

	public Abo() {
	}

	public Abo(int id, String name, int jahrVon, int jahrBis) {
		this.id = id;
		this.name = name;
		this.jahrVon = jahrVon;
		this.jahrBis = jahrBis;
	}

	// set und get ...

}

Converter:
Java:
@FacesConverter(value = "jahrConverter")
public class JahrConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext context, UIComponent component,
			String value) {

		/* value - jahr als String */
		Util s = Util.getInstance();

		List<Jahr> l = s.searchJahr(value);

		if (l.isEmpty()) {
			return null;
		} else {
			return l.get(0);
		}
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component,
			Object value) {
		if (value instanceof Jahr) {
			return ((Jahr) value).toString();
		}

		return "";
	}
}

Util:
Java:
@ManagedBean
@SessionScoped
public class Util implements Serializable {

	private static final long serialVersionUID = -1776603875281314213L;

	private static Util INSTANCE = new Util();

	private static final Map<Integer, Jahr> TABLE_JAHR = new HashMap<Integer, Jahr>();

	static {
		initJahr();
	}

	private static void initPosition() {
		for (int i = 1; i <= 12; i++) {
			TABLE_POSITION.put(i, new Position(i));
		}
	}

	private static void initJahr() {
		int delta = 10;

		GregorianCalendar gc = new GregorianCalendar();
		int jahr = gc.get(Calendar.YEAR);

		int id = 0;

		int min = jahr - delta;
		int max = jahr + delta;

		for (int i = min; i <= max; i++) {
			TABLE_JAHR.put(id, new Jahr(id, i));
			id++;
		}
	}

	private Util() {

	}

	public static Util getInstance() {
		return INSTANCE;
	}

	public List<Jahr> getAllJahr() {
		ArrayList<Jahr> l = new ArrayList<Jahr>();
		Collection<Jahr> c = TABLE_JAHR.values();
		l.addAll(c);

		return l;
	}

	public List<Jahr> searchJahr(String valueAsString) {

		String searchCriteria = (valueAsString == null) ? "" : valueAsString
				.toLowerCase().trim();

		Collection<Jahr> c = TABLE_JAHR.values();

		Collection<Jahr> results = new ArrayList<Jahr>();

		for (Jahr temp : c) {
			if (temp.getValueAsString() != null
					&& temp.getValueAsString().toLowerCase().trim()
							.startsWith(searchCriteria)) {
				results.add(temp);
			}
		}

		return new ArrayList<Jahr>(results);
	}

	public Jahr getJahr(Integer jahrId) {
		return TABLE_JAHR.get(jahrId);
	}
}

und die xhtml-Datei:
[XML]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">

<h:body>
<h:form id="frm_add">
<h:panelGrid columns="1" cellpadding="3">
<h:eek:utputLabel value="Abo-Name: " />
<h:inputText id="if_firstname" value="#{aboBean.name}" />

<h:eek:utputLabel value="Jahr Von: " />
<p:selectOneMenu id="id_von" value="#{aboBean.selectedYearVon}"
converter="jahrConverter" var="converter_von"
panelStyle="width:120px" effect="fade" style="width:120px;"
height="80">

<f:selectItem itemLabel="Select One" itemValue=""
noSelectionOption="true" />

<f:selectItems value="#{aboBean.jahrListe}" var="year"
itemLabel="#{year.valueAsString}" itemValue="#{year}" />
</p:selectOneMenu>

<h:eek:utputLabel value="Jahr Bis: " />
<p:selectOneMenu id="id_age" value="#{aboBean.selectedYearBis}"
converter="jahrConverter" var="converter_bis"
panelStyle="width:120px" effect="fade" style="width:120px;"
height="80">

<f:selectItem itemLabel="Select One" itemValue=""
noSelectionOption="true" />

<f:selectItems value="#{aboBean.jahrListe}" var="year"
itemLabel="#{year.valueAsString}" itemValue="#{year}" />
</p:selectOneMenu>

</h:panelGrid>
</h:form>
</h:body>
</html>
[/XML]

Wenn ich die Seite anzeige, sieht es wie hier aus:

pf_selOneMenu1 | Flickr - Photo Sharing!

Wenn ich auch mit
[XML]
<p:column> #{converter_von.valueAsString}</p:column>
[/XML]
komme, dann werden alle Jahre noch einmal unterhalb des 'selectOneMenu' angezeigt.

Sieht jeman, was hier falsch ist? Jahre werden zwar im selectOneMenu' korrekt angezeigt, aber wieso wird 'Select One' noch einmal unterhalb angezeigt? Ich könnte auch den Teil

[XML]
<f:selectItem itemLabel="Select One" itemValue=""
noSelectionOption="true" />
[/XML]

zwar verzichten, aber, das sollte funktionieren: ich sollte ein Suchfeld sehen, wo ich schnell das Jahr filtern kann.
Benutze primefaces 3.4.1

Vielen Dank.
 
Zuletzt bearbeitet:

fsicher

Bekanntes Mitglied
Nun, habe ich es (durch Zufall) herausgefunden, als ich styles in die Seite zum Testen eingefügt habe ...

Offenbar muss die Seite (aus welchem Grund auch immer ...) den Teil

[XML]
<h:head>

</h:head>
[/XML]

haben. Nachdem dieser Teil eingefügt wurde, verhalten sich die Komponenten wieder "ordentlich".
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
A JSF Suche Beispiel für Primefaces Tree als Navigation Web Tier 3
M JSP PrimeFaces LayoutUnits <- breite lässt sich nicht erzwingen wenn 'center' Web Tier 0
T JSF Primefaces: selectedvalue von "selectmanyCheckbox" geht verloren Web Tier 0
W JSF Primefaces Selection Mode Web Tier 2
W JSF einfache DataTable PrimeFaces Web Tier 1
FINF_AW_Alex JSF PrimeFaces Dialog verlinken Web Tier 3
W JSF Primefaces Web Tier 5
F JSF Problem mit Primefaces Web Tier 7
F JSF Problem mit Primefaces Web Tier 4
S JQuery und Primefaces (Immer wieder Ärger damit) Web Tier 0
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
K JSON in Primefaces Table Web Tier 3
C JSF Zusammenarbeit Primefaces und Tomahawk. Web Tier 2
J JSF Grad der Barrierefreiheit von PrimeFaces, ICEFaces, RichFaces und OpenFaces Web Tier 2
P JSF Primefaces Picklist-Ersatz mit vielen Daten Web Tier 4
S primefaces picklist untereinander anordnen Web Tier 6
T JSF Primefaces beim öffnen eines p:dialog wird eine neue View ManagedBean erstellt Web Tier 2
M onNodeExpand listener in PrimeFaces Web Tier 4
F Primefaces Dialog Web Tier 7
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
F Primefaces Datatable => Inplaces Web Tier 3
F Primefaces Datatable Web Tier 6
F JSF Primefaces 3.3 treetable Web Tier 9
F PrimeFaces commandButton und actionListener Web Tier 6
M JSF Dynamische Größe bei Primefaces Komponenten Web Tier 2
P PrimeFaces DataGrid Click "simulieren" Web Tier 5
J JSF2+primefaces? Web Tier 20
H JSF JSF 2.0 (Primefaces) commandLinks mit action="mypage.xhtml" ohne die URL im Browser zu ändern Web Tier 8
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
F Primefaces Einstieg Web Tier 1
R Primefaces: No Library Found For This Namespace Web Tier 4
M Primefaces COmmandBUtton Web Tier 8
D JSF Ajax mit Facelets (PrimeFaces) Web Tier 4
Z Primefaces sieht grausam aus Web Tier 1
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
Z PrimeFaces (/ JSF) Konfigurationsproblem Web Tier 8
C selectOneMenu mit valueChangeListener im <p:dialog Web Tier 2
F JSF h:selectOneMenu Wert vorbelegen klappt nicht? Web Tier 2
M Converter für SelectOneMenu Web Tier 3
Phash JSF - SelectOneMenu Property anzeigen Web Tier 3
F JSF p:selectOneMenu Session Web Tier 10
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
H JSF Textarea nur einblenden, bei bestimmter Auswahl in SelectOneMenu Web Tier 6
H JSF SelectOneMenu und der Converter Web Tier 3
F JSF ValueChangeListener in editable p:SelectOneMenu Web Tier 3
NoXiD JSF h:selectOneMenu - änderungen nicht übernommen Web Tier 14
P SelectOneMenu liest Daten nicht ein Web Tier 7
J JSF 2.0 h:selectOneMenu mit enums Web Tier 4
J h:selectOneMenu und Page-Refresh Web Tier 3
M selectOneMenu Web Tier 4
I selectOneMenu - Problem Web Tier 6
M SelectoneMenu Default Wert Web Tier 4
ModellbahnerTT JSF selectOneMenu Web Tier 15
J Datenübergabe aus selectOneMenu Web Tier 2
F Unterschied h:selectOneMenu zu rich:comboBox Web Tier 4
E Wert aus JSF-Selectonemenu in Textfeld schreiben Web Tier 4
A JSF SelectOneMenu mit Werten aus Bean vorbelegen Web Tier 2
M SelectOneMenu mit Inhalt aus DB Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben