# JSF -Dialogbox -Hilfe



## Snibou (5. Jan 2012)

Hi Leute,

bitte lacht mich nicht aus, meine Java oder JSF-Kenntnisse sind nicht grad die besten und ich bin am verzweifeln :-(
Hab hier eine datatable und möchte in der letzten Spalte einen "Löschen" Button haben. Was ja an sich nicht das Problem ist, das krieg ich noch hin. Er sollte bei einem Klick eine Dialogbox öffnen - beim Klick auf 'ja', sollte der dahinter liegende Datenbanksatz gelöscht werden. So sieht bisher mein Quellcode aus:


```
<!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:t="http://myfaces.apache.org/tomahawk">
<!--Tomahawk-Zusatzbibliothek-->

<head>
<title>AERIS Backend - Mitarbeiterverwaltung</title>
</head>

<body bgcolor="#b0c4de" text="#000000" link="#A00000" vlink="#600000"
	alink="#A00000">

<f:view>
	<!-- form umschließt ein Formular -->
	<h:form id="form" style="margin: 50px;">

		<h2>AERIS Mitarbeiterbereich</h2>
		<h4>Herzlich Willkommen</h4>

		<h:commandButton value="Neuer Zeppelin"
			action="#{zeppelinController.neuerZeppelin}" />


		<h:dataTable value="#{zeppelinController.zeppelinListe}"
			binding="#{zeppelinController.zeppelinAllTable}" var="zeile"
			bgcolor="#cad9ee" cellspacing="50px">


			<h:column>
				<f:facet name="header">
					<h:outputText value="Zeppelin-Id" />
				</f:facet>
				<h:outputText value="#{zeile.zeppelinId}" />
			</h:column>
			<h:column>
				<f:facet name="header">
					<h:outputText value="Name" />
				</f:facet>
				<h:outputText value="#{zeile.name}" />
			</h:column>
			<h:column>
				<f:facet name="header">
					<h:outputText value="Anzahl der Sitze" />
				</f:facet>
				<h:outputText value="#{zeile.anzahlsitze}" />
			</h:column>
			<h:column>
				<f:facet name="header">
					<h:outputText value="Hersteller" />
				</f:facet>
				<h:outputText value="#{zeile.hersteller}" />
			</h:column>
			<h:column>
				<f:facet name="header">
					<h:outputText value="Baujahr" />
				</f:facet>
				<h:outputText value="#{zeile.baujahr}" />
			</h:column>
			<h:column>
				<f:facet name="header">
					<h:outputText value="Beschreibung" />
				</f:facet>
				<h:outputText value="#{zeile.beschreibung}" />
			</h:column>
			<h:column>
				<h:commandButton id="bearbeiten" value="bearbeiten"
					action="#{zeppelinController.bearbeiteZeppelin}" />
			</h:column>

			<h:column>
				<form>
				<div id="dlg" style="visibility:hidden; background-color:green;
					width:200px; height:200px">
					Wollen Sie wirklich l&ouml;schen? <br/>
					<input type="submit" value="Ja"/>
					<input type="button" value="Nein" onclick="document.getElementByld('dlg').style.visibility='hidden'"/>
					
				</div>
				<input type="button" value="L&ouml;schen"
					onclick="document.getElementByld('dlg').style.visibility='visible'"/>
					
				</form>
			
			</h:column>
		
		
		</h:dataTable>
		
		

		<br />
		<!-- Aufruf der logoutMethode in der Klasse LogoutController.java -->
		<h:commandLink value="Logout" action="#{logoutController.logout}" />

		<li><a href="be_index.jsf">zurück</a></li>

	</h:form>
</f:view>
</body>
</html>
```


Der 'löschne'-Button wird angezeigt, öffnet aber beim Klick nichts.
Mal ganz davon abgesehen, dass ich keine Ahnung hab, wie der Code zum löschen in der DAO aussehen soll bzw. wo ich hier die Methode zum löschen unterbringen sollte :-(
Oder wie diese Methode dazu aussehen sollte..Himmel..ich hab wirklich keine Ahnung..

Vielen Dank für eure Hilfe.


PS: Gibts im Internet ein gutes Nachschlagewerk für so was?:rtfm:
Die Literaturempfehlung meines Dozenten kann ich für diesen Punkt in den Müll kicken :-(


----------



## JanHH (6. Jan 2012)

Hm also diese Vermengung von JSF- und HTML-Code ist an sich unschön.

Wenn ich sowas brauche, nehme ich einen rich faces-Dialog (rich:modalPanel), der die ja/nein-Buttons enthält.

Wenn Du das so wie da steht mit javascript machen willst, würde ich keinen HTML-Code nehmen, sondern ebenfalls jsf (ein div oder so, hanelGroup, s:div, was auch immer), mit einer ID versehen, da den Form-Code per JSF rein, zum Löschen einen h:commandButton und das ganze wie gehabt invisible und per javascript einblenden. Ggf. keinen command-Button sondern einen command-Link, damit man die ID des zu löschenden datensatzes mitgeben kann.

Womit arbeites Du überhaupt? JSF 1.2? 2.0? JPA? Hibernate? EJB? Seam? sonstiges?


----------



## waldek87 (6. Jan 2012)

Zum Einlesen kann ich dir ohne schlechtes Gewissen jsfatwork empfehlen.


----------



## nocturne (6. Jan 2012)

Du kannst keine Forms verschachteln!
Schluss-aus-fertig.


----------

