# Konvertierung JSF -> facelets (templating)



## freez (15. Okt 2007)

Hallo,

ich habe ein kleines Projekt, was im Laufe der zeit immer größer geworden ist. Anfangs waren es nur 2 Seiten und nun wird es immer mehr. Bevor es noch größer wird habe wollte ich meine Seiten auf Templates umstellen. Nun habe ich mich etwas in Facelets rein gearbeitet. Ein bis zwei kleine Beispielprojekte haben ja super geklappt. Nur mein Projekt, was ich umstellen will, will nicht so recht. MyEclipse bringt mir einige Fehlermeldungen und wenn ich das projekt auf Tomcat deploye bringt mir Tomcat auch Meldungen. kann mir jemand sagen, ob ich hier grundlegend etwas verkehrt mache?

Zum Beispiel meckert mir Tomcat diese zweite Zeile an:

```
<h:commandLink styleClass="datatable_col_link" action="to_newDevice" actionListener="#{DeviceDetail.newDevice}">
										<h:outputText value="neues Gerät" styleClass="datatable_col_links_text" />
										<f:param id="cellID_newDevice" name="cellID_newDevice" value="#{searchcell.cellID}" />
									</h:commandLink>
```


```
javax.servlet.ServletException: Error Parsing /search.xhtml: Error Traced[line: 72] Invalid byte 2 of 3-byte UTF-8 sequence.
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
	org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
```

MyEclipse meckert bei der ersten Zeile von dem Code und meldet:

```
MethodeBinding Attributes values must be EL expressions.
```
 Unterstreichen tut er mir den actionListener

Der Code hat aber als JSF Seite super funktioniert.

das Template schaut so aus:

```
<?xml version="1.0" encoding="UTF-8"?>
<!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:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:t="http://myfaces.apache.org/tomahawk"
	xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en">
	<head>
		<title><ui:insert name="title">Titel</ui:insert></title>
		<meta http-equiv="keywords" content="enter,your,keywords,here" />
		<meta http-equiv="description"
			content="A short description of this page. standard.xhtml" />
		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
		<link rel="stylesheet" type="text/css" href="styles.css" />
		
	</head>
	<body>
		


			<t:div styleClass="captionPosition">
				<t:div styleClass="captionDesign">
					<h:form>
						<h:outputText styleClass="cellCaption1"><ui:insert name="caption">Caption</ui:insert></h:outputText>
						<t:htmlTag value="br" />
						<h:outputText styleClass="cellDescription"><ui:insert name="description">Description</ui:insert></h:outputText>
						<t:htmlTag value="br" />
						<h:outputText value="Optionen: " styleClass="cellOptions" />
						<ui:insert name="options">Options</ui:insert>
					</h:form>
				</t:div>
				<t:div>
					<ui:insert name="links">Links</ui:insert>
				</t:div>
				<t:div>
					<ui:insert name="formular">Formular</ui:insert>
				</t:div>
				<t:div styleClass="space"></t:div>
				<t:div>
					<ui:insert name="body1">Body 1</ui:insert>
				</t:div>
				<t:div styleClass="space"></t:div>
				<t:div>
					<ui:insert name="body2">Body 2</ui:insert>
				</t:div>
			</t:div>
		</p>
	</body>
</html>
```

und die Seite, die das Template benutzt sieht prinzipiell so aus:

```
<?xml version="1.0" encoding="UTF-8"?>
<!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:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:t="http://myfaces.apache.org/tomahawk"
	xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="description"
			content="A short description of this page. cell.xhtml" />
	</head>
	<body>
		


			<ui:composition template="/template/standard.xhtml">
				<ui:define name="body1">
					
				</ui:define>
				<ui:define name="body2">
					
				</ui:define>
				<ui:define name="formular">
					
				</ui:define>
				<ui:define name="title">
					
				</ui:define>
				<ui:define name="links">
					
				</ui:define>
				<ui:define name="options">
					
				</ui:define>
				<ui:define name="caption">
						
				</ui:define>
				<ui:define name="description">
					
				</ui:define>
			</ui:composition>
		</p>
	</body>
</html>
```


----------



## freez (15. Okt 2007)

So, bin etwas weiter gekommen. Problem war wohl das 'ä' in der Zeile:

```
<h:outputText value="neues Gerät"
```

habe nun alle Umlaute auf die HTML Entitys umgestellt und schon läufts


----------

