Primefaces Buttons#

JSF Ext liefert CSS- und Javascript-Dateien zum Anpassen normaler Buttons an das Primefaces Layout.

Skins#

Skins können inzwischen über Maven konfiguriert werden. In der pom.xml:
	<dependency>
		<groupId>org.primefaces.themes</groupId>
		<artifactId>sunny</artifactId>
		<version>1.0.8</version>
	</dependency>

Und dann nur noch in der web.xml auswählen:

	<context-param>
		<param-name>primefaces.THEME</param-name>
		<param-value>sunny</param-value>
	</context-param>

Oder man bindet das Theme im Page-Template ein:

<h:outputStylesheet name="theme.css" library="primefaces-<theme>"/>

Custom Themes#

Da Primefaces auf JQuery aufbaut, kann der Online-Theme-Konfigurator für die Skins verwendet werden. Aus dem heruntergeladenen ZIP wird das Verzeichnis custom-theme nach <web-root>/resources/primefaces-<theme>/ extrahiert, sodass sich darin /images und /jquery-ui-1.9.1.custom.css befindet. /jquery-ui-1.9.1.custom.css wird nach theme.css umbenannt, damit Primefaces es findet. Oder eben wieder über die Anweisung <h:outputStylesheet>.

Menu#

Das Primefaces Menu unterstützt kein Behavior oder ActionEvent-Listener. Mit einem Workaround kann dies umgangen werden:
<p:menuitem>
	<h:commandLink styleClass="ui-menuitem-link ui-corner-all">
		<f:ajax/>
		<h:outputText value="Scopes"/>
		<e:load scopeId=":scopeList"/>
	</h:commandLink>
</p:menuitem>

Erklärung: Es wird ein <h:commandLink> innerhalb des <p:menuitem> platziert, der den Primefaces-Style enthält. Dieser unterstützt nun Behaviors und ActionEvents und sieht genauso aus.

Datatable#

Das Layout der Data-Tables kann mitunter etwas sperrig sein, weil sie sich nur bedingt an umgebende Container anpassen. Ein möglicher Fix besteht in CSS-Styles:
.ui-datatable table {
	table-layout: fixed !important;
}
.ui-datatable .ui-column-filter {
	width: 80px;
}
.ui-datatable tbody td, .ui-treetable tbody td {
	padding: 3px 4px;
}
.ui-datatable thead th, .ui-treetable thead th {
	padding: 3px 4px;
}
.ui-datatable tfoot td, .ui-treetable tfoot td {
	padding: 3px 4px;
}