Tabellenzeile löschen

Hallo ihr Alle,
ich poste hier Bilder, damit es übersichtlicher ist.

  1. Problem - Es geht darum, dass wenn ich auf ausführen drücke und den Tag markiere, welche ich löschen möchte, wird zwar gelöscht, aber ich muss den Browser aktualisieren damit ich aktuelle Tabelle bekomme.

  2. Problem - Wenn ich in der Tabelle auf lösche Link gehe, kommt Dialog wie es in dem Bild ist, aber wird nicht ausgelesen name des Tags und mit verknüpfende Anzahl der Produkte. wenn ich dort auch auf löschen gehe, wird zwar das richtige Produkt gelöscht, aber muss ich wieder Browser aktualisieren damit ich aktuelle Tabelle bekomme

Primefaces

Controller Klasse hat
**@ManagedBean(name = “tagcontroller”) **(man hat mit empfohlen, dass ich statt @ManagedBean @Named verwenden sollte. Ich mache das noch in nähere Zukunft)
@ViewScoped

[XML]

<ui:composition template="…/index.xhtml"
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
xmlns:c=“http://java.sun.com/jsp/jstl/core
xmlns:fn=“http://java.sun.com/jsp/jstl/functions”>

<ui:define name="content">
				<div class="row">
					<div class="col-lg-8">
						<h:form id="tags">
					
				<div class = "row">
					<div class = "col-lg-2">
						<h:outputLabel value="Markierte" />
					</div>
					<div class = "col-lg-2" style = "align:left">
						 <p:selectOneMenu id="aktion"   value="#{tagcontroller.selectedAction}" >
		               			 <f:selectItem itemLabel="Aktion" itemValue="#{null}" noSelectionOption="true" />
		              		     <f:selectItem itemLabel = "löschen" itemValue = "delete" />
		           		 </p:selectOneMenu>
					</div>
					<div class = "col-lg-1">
						<p:commandButton value = "ausführen" action = "#{tagcontroller.doAction()}" update="tagTable"></p:commandButton>
					</div>
				</div>
			<p:dataTable id="tagTable" editable="true" editMode="cell"
									var="tag" 
									 widgetVar="tags" scrollable="true"
									maxScrollHeight="500" resizableColumns="true"
									rowStyleClass="odd,even" value="#{tagcontroller.tags}" rowKey="#{tag.id}" selection = "#{tagcontroller.selectedTags}">
			
						<p:column selectionMode= "multiple" headerText="Aktion" style = "width:5em" />
				    	<p:column headerText="Name" >
								<h:outputText value = "#{tag.name}" />
						</p:column>	
						<p:column headerText="Verknüpfte Produkte"  >
							<div align = "center">
								<h:outputText  value="#{spmarticlecontroller.getSpmArticleByArticleTagId(tag.id).size()}"/>
							</div>
						</p:column>
						<p:column headerText="Aktionen"  >
							<div align = "center">
								<h:link outcome="/spm/tag_detail.xhtml" target="_blank">
										<i class="fa fa-pencil"></i>	 
											 <f:param name="id" value="#{tag.id}" />
								</h:link>
								<h:commandLink  actionListener="#{tagcontroller.setTagToDelete(tag)}"  update = ":deleteDlg" onclick="PF('tagToDeleteDlg').show();">
								    	<f:ajax execute="@form" render="@none" />
									     	<i class="fa fa-trash"></i>	 
								</h:commandLink>
							</div>
						</p:column>
								
			</p:dataTable>
	</h:form>
						<ui:include src="tag_deleteConfirmDlg.xhtml" />
</div>
</div>
	
</ui:define>

</ui:composition>[/XML]

[XML]

<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:ui=“http://java.sun.com/jsf/facelets
xmlns:p=“http://primefaces.org/ui
xmlns:c=“http://java.sun.com/jsp/jstl/core”>

<p:dialog widgetVar=“tagToDeleteDlg” modal=“true” width = “600” height=“300” showEffect=“fade” render=“not null #{tagcontroller.tagToDelete}”>
<p:outputPanel id=“deleteDlg” style=“text-align:center;”>


<h:outputText value = "Sind Sie Sicher, dass Sie den Tag "/>
<h:outputText value = “#{tagcontroller.tagToDelete.name}”/>
<h:outputText value = "löschen möchten ? dieser Tag ist mit "/>
<h:outputText value = “#{spmarticlecontroller.getSpmArticleByArticleTagId(tagcontroller.tagToDelete.id).size()}”/>
<h:outputText value = “Producte verknüpft”/>


<p:commandButton value=“Löschen bestätigen” actionListener = “#{tagcontroller.deleteArticleTagDelete(tagcontroller.tagToDelete.id)}” update = “tags” onclick = “PF(‘tagToDeleteDlg’).hide()” />
<p:commandButton value=“Abbrechen” onclick=“PF(‘tagToDeleteDlg’).hide()” />

</p:outputPanel>
	</p:dialog>  

</ui:composition>
[/XML]

f:ajax mit render Attribute ist Deine Lösung.

wenn ich für Ausführen button ajax so einbaue macht nichts ich habe mit update = “tags” auch versucht

[XML]

<p:commandButton value = “Ausführen” action = “#{tagcontroller.doAction()}” ajax = “true” update=“tagTable”></p:commandButton>

[/XML]

Sach mal, muss der Confirm Dialog nicht in dem Form Tag liegen, damit die Action innherhalb des Form Events ausgeführt werden kann?
Der Dialog weiss doch gar nicht wohin er sein Bestätigungs Event weiter leiten soll… Nur die Methode zum Bean alleine reicht da nicht.

viele Grüße
Steven

@StevenHachel : Ja, das müsste in einem Form liegen. Allerdings ist dieser Thread schon etwas älter. :slight_smile:

Okay, da unser Threadstater ja noch keine abschliessende Meldung geamcht hat, dachte ich, es wäre noch relevant für ihn. :slight_smile: