Hi,
ich benutze Primefaces 11 und spiele gerade mit dynamischen Dialogen.
Grundsätzlich soll folgendes passieren: der User hat eine Excel eingelesen und erhält eine Tabelle. Manche Zeilen haben Fehler, die der Nutzer erst noch korrigieren muss.
Für manche von den Fehlern muss sich ein Dialog öffnen, um den Nutzer bei der Behebung zu unterstützen.
Das ist die "Hauptseite":
Das ist ein Auszug aus der hwimportwiz-Bean:
Die Funktion getTypElid wird aufgerufen und die Felder diaBezeichnung und diaTyp werden ordentlich befüllt. Wenn jetzt aber die typeelidchooser.xhtml geladen wird:
Dann sind die Felder diaBezeichnung und diaTyp null. Ich gehe mal davon aus, dass der Dialog eine neue Instanz von hwimportwiz öffnet. Wie baue ich das jetzt so, dass ich mich grundsätzlich im selben Bean befinde? Ich will ja grundsätzlich auch einen Wert aus dem Dialog an die Bean zurück geben. Das bringt mir ja nix, wenn die Rückgabe an eine andere Instanz passiert.
Danke schon mal für eure Hilfe.
ich benutze Primefaces 11 und spiele gerade mit dynamischen Dialogen.
Grundsätzlich soll folgendes passieren: der User hat eine Excel eingelesen und erhält eine Tabelle. Manche Zeilen haben Fehler, die der Nutzer erst noch korrigieren muss.
Für manche von den Fehlern muss sich ein Dialog öffnen, um den Nutzer bei der Behebung zu unterstützen.
Das ist die "Hauptseite":
HTML:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
template="../../layout.xhtml">
<ui:define name="header">
Hardwareimport
</ui:define>
<ui:define name="main">
<div class="card">
<h:form id="hwImportWizardFrm">
<p:growl id="messages" sticky="false" showDetail="true" />
<p:panel header="Importdaten" id="tablePanel">
<h:panelGrid columns="1" rendered="#{not empty hwimportwiz.hwImport.file}">
<p:dataTable id="importFileContent" var="line" value="#{hwimportwiz.hwImport.sheet.tableSheetContent}" scrollable="true"
tableStyle="width: auto;" rowStyleClass="#{line.get('error') eq '' ? 'good' : 'bad'}">
<p:column headerText="Fehler" field="get('error')" sortable="false" filterable="false" >
<p:commandButton icon="pi pi-search" value="TYP ELID" actionListener="#{hwimportwiz.getTypElid(line)}"
styleClass="edit-button rounded-button ui-button-success"
rendered="#{fn:containsIgnoreCase(line.get('error'), 'Typ nicht gefunden')}">
</p:commandButton>
</p:column>
<p:column headerText="ProIPS_Modell" field="get('ProIPS_Modell')" sortable="false" filterable="false" />
<p:columns value="#{hwimportwiz.hwImport.sheet.columns}" var="column" headerText="#{column.header}"
field="get(column.property)" sortable="false" filterable="false"/>
<p:column headerText="Typ ELID" field="get('cmd_type_elid')" sortable="false" filterable="false" />
</p:dataTable>
</h:panelGrid>
</p:panel>
</h:form>
</div>
</ui:define>
</ui:composition>
Das ist ein Auszug aus der hwimportwiz-Bean:
Java:
package main.java.proips.hwImporter;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.poi.EncryptedDocumentException;
import org.primefaces.PrimeFaces;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.event.FlowEvent;
import org.primefaces.model.file.UploadedFile;
import main.java.proips.persistence.entities.CommandTranslateModel;
import main.java.proips.persistence.interfaces.CommandModellFactory;
@Named("hwimportwiz")
@RequestScoped
public class HwImportWizard implements Serializable {
private static final long serialVersionUID = 1L;
private boolean hasError = false;
@Inject private HwImport hwImport;
@Inject private CommandModellTranslater modellTranslater;
@Inject private CommandModellFactory commandModellFactory;
private List<CommandTranslateModel> modelList;
private String diaBezeichnung;
private String diaTyp;
private CommandTranslateModel selectedElid;
@PostConstruct
public void init() {
modelList = commandModellFactory.getAllTranslations();
}
public void getTypElid(Map<String, Object> line) {
String bezCol = TableSheetHelper.getColumn("bezeichnung", this.hwImport.getSheet().getColumns());
String typCol = TableSheetHelper.getColumn("typ", this.hwImport.getSheet().getColumns());
diaBezeichnung = (String) line.get(bezCol);
diaTyp = (String) line.get(typCol);
Map<String, Object> options = new HashMap<String, Object>();
options.put("modal", true);
options.put("resizable", false);
PrimeFaces.current().dialog().openDynamic("typeelidchooser", options, null);
}
//GETTER und SETTER
}
Die Funktion getTypElid wird aufgerufen und die Felder diaBezeichnung und diaTyp werden ordentlich befüllt. Wenn jetzt aber die typeelidchooser.xhtml geladen wird:
HTML:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Elid wählen</title>
<style>
html {
font-size: 14px;
}
</style>
</h:head>
<h:body>
<h:outputText value="Bezeichnung" />
<p:inputText value="#{hwimportwiz.diaBezeichnung}" required="false" readonly="true" />
<h:outputText value="Typ" />
<p:inputText value="#{hwimportwiz.diaTyp}" required="false" readonly="true" />
</h:body>
</html>
Danke schon mal für eure Hilfe.