Hi an alle, leider bin ich grad ein wenig ratlos.
Also ich habe eine xhtml Seite zum erstellen eines neuen Artikels:
Der Dialog sieht so aus:
Wenn ich jetzt auf dem Button klicke, um den Dialog zu öffnen, zeigt mir der Debugger, das der Artikel null ist und es wird ein neuer erstellt. Aber ich dachte, da es eigentlich in der gleichen View ist, sollte auch das Objekt Artikel immer noch mit den Werten initialisiert sein wie vorher von der xhtml Seite. Was mache ich falsch?
Also ich habe eine xhtml Seite zum erstellen eines neuen Artikels:
Java:
<ui:composition template="/pages/template/template.xhtml">
<ui:define name="content">
<h:panelGroup id="messagePanel" layout="block">
<h:messages errorStyle="color: red" infoStyle="color: green" showDetail="true" layout="table"/>
</h:panelGroup>
<h:form enctype="multipart/form-data">
<p:panelGrid columns="2" style="min-width: 100%;" >
<f:facet name="header">
<h:outputText value="#{msg.CreateArtikelTitle}"></h:outputText>
</f:facet>
<h:outputLabel value="#{msg.CreateArtikelLabel_name}" for="name" />
<p:inputText id="name" value="#{artikelMB.artikel.name}" title="#{msg.CreateArtikelTitle_name}" required="true" />
<h:outputLabel value="#{msg.CreateArtikelLabel_bildURL}" for="bild" />
<p:fileUpload value="#{fileUploadMB.file}"
mode="simple"
sizeLimit="100000"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>
<h:outputLabel value="#{msg.CreateArtikelLabel_jahr}" for="jahr" />
<p:inputText id="jahr" value="#{artikelMB.artikel.jahr}" title="#{msg.CreateArtikelTitle_jahr}" required="true" >
<f:validateLongRange minimum="1000" maximum="2000" />
</p:inputText>
<h:outputLabel value="#{msg.DialogLabel}" for="dialog"/>
<p:commandButton value="Dialog" onclick="Dialog.show()"/>
<f:facet name="footer">
<p:commandButton actionListener="#{fileUploadMB.handleFileUpload}" action="#{artikelMB.createArtikel()}" ajax="false" style="float: left;" value="#{msg.create}" />
<p:commandButton action="/faces/pages/artikel/Create.xhtml" ajax="false" style="float: right;" value="#{msg.cancel}"/>
</f:facet>
<ui:include src="/pages/artikel/Dialog.xhtml" />
</p:panelGrid>
<br />
</h:form>
</ui:define>
</ui:composition>
Der Dialog sieht so aus:
Java:
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!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:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:body>
<p:dialog widgetVar="Dialog" width="300" height="100" modal="true">
<h:form prependId="false">
<h:panelGrid columns="2" styleClass="maxwitdh">
<h:outputLabel value="GPS Lat:"/>
<p:inputText value="#{artikelMB.artikel.gpsLatitude}" />
<h:outputLabel value="GPS Lon:"/>
<p:inputText value="#{artikelMB.artikel.gpsLongitude}" />
<p:commandButton value="Hinzufügen" type="submit" oncomplete="Dialog.hide();" style="float: left;"/>
<p:commandButton value="Abbrechen" style="float: right;" onclick="return cancel();"/>
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
</html>
Wenn ich jetzt auf dem Button klicke, um den Dialog zu öffnen, zeigt mir der Debugger, das der Artikel null ist und es wird ein neuer erstellt. Aber ich dachte, da es eigentlich in der gleichen View ist, sollte auch das Objekt Artikel immer noch mit den Werten initialisiert sein wie vorher von der xhtml Seite. Was mache ich falsch?