# unterschied jsf mit xhtml und jsf mit jsp



## wiegia086 (4. Okt 2009)

Hi leute.

kann mir jemand erklären welchen unterschied es macht ob ich jsf in einer html datei einbinde im vergleich wenn ich dies in einer jsp datei mache?

ich stehe vor folgenden Problem:
ich habe folgendes Tutorial durchgespielt (First Java Server Faces Tutorial (JSF) - Eclipse) und wollte jsf anstatt in jsp dateien in xhtml dateien einbinden...
jedoch kann ich in xhtml keine jsp tags einbinden, wie binde ich dann folgenden Code ein? 

```
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
```

kann mir jemand erklären, wie ich in xhtml dateien den bezug zum context path herstellen kann damit meine bean, damit arbeiten  kannß?
vielen dank im vorhinein,
lg andi


----------



## maki (4. Okt 2009)

Versuch mal

```
${request.contextPath}
```

Scriptlets solltest du in JSPs vermeiden, mit facelets sollte es die Möglichkeit gar nicht geben AFAIK.


----------



## wiegia086 (5. Okt 2009)

wo binde ich den ${request.contentpath} in meiner xhtml seite ein?? 
einfach oben? oder im Form tag oder im button taag?

danke für die ersten hinweise.
lg andi


----------



## maki (5. Okt 2009)

> wo binde ich den ${request.contentpath} in meiner xhtml seite ein??


Wo brauchst du denn Wert denn überhaupt??


----------



## wiegia086 (5. Okt 2009)

ich will aus einer dynamisch erzeugten tabelle (jsf) einen zeile löschen, dafür löse ich ein event aus. jedoch funktioniert dass mit dem event nur wenn ich jsf in einer jsp seite einbette . wenn ich dies  in einer xhtml seite mache erkennt das bean das event nicht.

siehe code:
so funktioniert das löschen einer Zeile : listBooks.jsp

```
<%@ page language="java" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<base href="<%=basePath%>">

	<title>List of books</title>
</head>
  
<body>
	<f:view>
		<h:form id="bookList">
		<h:dataTable id="books" 
					 value="#{bookListBean.books}" 
					 var="book" 
					 border="1">   
		  <h:column>
		    <f:facet name="header">
		     <h:outputText  value="Author"/>
		    </f:facet>
		    <h:outputText value="#{book.author}" />
		  </h:column>
		  <h:column>
		    <f:facet name="header">
		      <h:outputText  value="Title"/>
		    </f:facet>
		    <h:outputText value="#{book.title}" />
		  </h:column>
		  <h:column>
		    <f:facet name="header">
		      <h:outputText  value="Available"/>
		    </f:facet>
		    <h:selectBooleanCheckbox disabled="true" 
		    						 value="#{book.available}" />
		  </h:column>
		  <h:column>
		    <f:facet name="header">
		      <h:outputText  value="Edit"/>
		    </f:facet>
		    <h:commandLink id="Edit" 
		    			   action="editBook" 
		    			   actionListener="#{bookBean.selectBook}">
		    	<h:outputText value="Edit" />
		    	<f:param id="editId" 
		    			 name="id" 
		    			 value="#{book.id}" />
		    </h:commandLink>
		  </h:column>
		   <h:column>
		    <f:facet name="header">
		      <h:outputText  value="Delete"/>
		    </f:facet>
		    <h:commandLink id="Delete" 
		    			   action="listBooks" 
		    			   actionListener="#{bookBean.deleteBook}">
		    	<h:outputText value="Delete" />
		    	<f:param id="deleteId" 
		    			 name="id" 
		    			 value="#{book.id}" />
		    </h:commandLink>
		  </h:column>
		</h:dataTable> 
		
		<h:commandLink id="Add" 
					   action="editBook" 
					   actionListener="#{bookBean.initBook}">
			<h:outputText value="Add a book" />
		</h:commandLink>
		</h:form>
	</f:view>
</body>
</html>
```

und so funktioniers nicht mehr: listBooks.xhtml

```
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:rich="http://richfaces.ajax4jsf.org/rich"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
	xmlns:t="http://myfaces.apache.org/tomahawk"
	template="/WEB-INF/templates/master.xhtml">

	<ui:define name="main">
		<rich:panel>
			<f:view>
				<h:form id="bookList">
					<h:dataTable id="books" value="#{bookListBean.books}" var="book"
						border="1">
						<h:column>
							<f:facet name="header">
								<h:outputText value="Author" />
							</f:facet>
							<h:outputText value="#{book.author}" />
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Title" />
							</f:facet>
							<h:outputText value="#{book.title}" />
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Available" />
							</f:facet>
							<h:selectBooleanCheckbox disabled="true"
								value="#{book.available}" />
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Edit" />
							</f:facet>
							<h:commandLink id="Edit" action="editBook"
								actionListener="#{bookBean.selectBook}">
								<h:outputText value="Edit" />
								<f:param id="editId" name="id" value="#{book.id}" />
							</h:commandLink>
						</h:column>
						<h:column>
							<f:facet name="header">
								<h:outputText value="Delete" />
							</f:facet>
							<h:commandLink id="Delete" action="listBooks"
								actionListener="#{bookBean.deleteBook}">
								<h:outputText value="Delete" />
								<f:param id="deleteId" name="id" value="#{book.id}" />
							</h:commandLink>
						</h:column>
					</h:dataTable>

					<h:commandLink id="Add" action="editBook"
						actionListener="#{bookBean.initBook}">
						<h:outputText value="Add a book" />
					</h:commandLink>
				</h:form>
			</f:view>
		</rich:panel>
	</ui:define>
</ui:composition>
```

ich verstehe dass nicht


----------



## maki (5. Okt 2009)

> und so funktioniers nicht mehr


Fehlermeldung?


----------



## wiegia086 (5. Okt 2009)

ich bekommen keine fehlermeldung..

er führt mir einfach nicht die action listenermethode der bean aus. keine meldung in der konsole oder im browser....


----------

