C_Klingbeil
I'm new here

fs-server.log: Warnung "no form element found for column"

Hallo Community,

in unserem fs-server.log treten gehäuft Meldungen mit dem Hinweis "no form element found for column" auf. Sie sehen dann z.B. so aus:

WARN  10.01.2013 15:35:38.127 (de.espirit.firstspirit.server.reference.ReferenceManagerImpl): couldn't get references of bilder[Entity type: bilder (3082, )].bild_popup (prj=632748)

FSVersion=4.2.470.51418#2800;JDK=1.6.0_24 64bit Sun Microsystems Inc.;OS=SunOS 5.10 amd64;Date=10.01.2013 15:35:38

java.lang.IllegalArgumentException: no form element found for column bilder#bild_popup

    at de.espirit.firstspirit.client.editorcomponent.EditorWrapper.guessGomFormElement(EditorWrapper.java:323)

    at de.espirit.firstspirit.client.editorcomponent.EditorWrapper.getAccessEditor(EditorWrapper.java:275)

    at de.espirit.firstspirit.client.editorcomponent.EditorWrapper.getAccessEditor(EditorWrapper.java:264)

    at de.espirit.firstspirit.server.reference.ReferenceManagerImpl.getReferences(ReferenceManagerImpl.java:1479)

    at de.espirit.firstspirit.server.reference.ReferenceManagerImpl.contentChanged(ReferenceManagerImpl.java:1442)

    at de.espirit.firstspirit.server.reference.ReferenceManagerImpl.access$3200(ReferenceManagerImpl.java:113)

    at de.espirit.firstspirit.server.reference.ReferenceManagerImpl$ContentUpdater.onEvent(ReferenceManagerImpl.java:2175)

    at de.espirit.firstspirit.server.reference.ReferenceManagerImpl$ContentUpdater.onEvent(ReferenceManagerImpl.java:2167)

    at de.espirit.firstspirit.server.event.EventManagerImpl.fireEventNow(EventManagerImpl.java:309)

    at de.espirit.firstspirit.server.event.EventManagerImpl.fireEvent(EventManagerImpl.java:86)

    at de.espirit.firstspirit.content.ContentManagerImpl$TemporalSessionHandler.commit(ContentManagerImpl.java:1261)

    at de.espirit.firstspirit.content.ContentManagerImpl.commit(ContentManagerImpl.java:665)

    at sun.reflect.GeneratedMethodAccessor13091.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:62)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:91)

    at de.espirit.firstspirit.server.io.handler.CompactCall.handle(CompactCall.java:67)

    at de.espirit.firstspirit.server.io.ManagerCallWorker.run(ManagerCallWorker.java:108)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:553)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:520)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

    at java.lang.Thread.run(Thread.java:662)

    at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:36)

In der Tabelle bilder gibt es wirklich die Spalte bild_popup, die im Mapping nicht genutzt wird. Manche Datensätze haben auch Inhalte in dieser Spalte. Die Spalte wird aber zur Zeit nicht benötigt und ist deshalb im gesamten Projekt ungenutzt. Sie stammt aus einer uralten Migration.

Nun zu meinen Fragen:

  • Was bedeutet die Fehlermeldung genau?
  • In welchem Zusammenhang tritt sie auf? (JavaClient, Generierung, Preview,...?)
  • Wie werde ich die Fehlermeldung wieder los?

Hat jemand dazu eine Idee?

Viele Grüße,

C. Klingbeil

0 Kudos
4 Replies
feddersen
Community Manager

Die Fehlermeldung besagt, dass die Neuberechnung des Referenzgraphes für dieses Feld nicht funktioniert hat. Ursache ist das fehlende Mapping von Eingabekomponente zu Datenbankspalte. Das ist klar, denn es gibt ja keine Persistenz für die Daten.

Fehler tritt auf, wenn der Referenzgraph neu berechnet wird.

Den Fehler kann man beheben, indem man das Mapping wieder definiert oder die Eingabekomponente aus dem Formular entfernt.

Hallo Herr Feddersen,

danke für die schnelle Antwort.

Christoph Feddersen schrieb:

Die Fehlermeldung besagt, dass die Neuberechnung des Referenzgraphes für dieses Feld nicht funktioniert hat. Ursache ist das fehlende Mapping von Eingabekomponente zu Datenbankspalte. Das ist klar, denn es gibt ja keine Persistenz für die Daten.

Fehler tritt auf, wenn der Referenzgraph neu berechnet wird.

Das könnte eine Erklärung sein. Wird der Referenzgraph nur mit dem Auftrag RepairReferences ausgeführt oder auch beim Laden eines Projekts o.ä.?

Christoph Feddersen schrieb:

Den Fehler kann man beheben, indem man das Mapping wieder definiert oder die Eingabekomponente aus dem Formular entfernt.

Unser aktuelles Problem ist aber, dass weder das Mapping noch die Eingabekomponenten existieren. Wir müssten also erst einmal Formularfelder anlegen, dann das Mapping definieren und dann RepairReferences ausführen? Reicht es, wenn wir das einmal machen, auch wenn die Spalten in der Datenbank weiter bestehen und gefüllt bleiben? Ich würde danach gerne die Eingabekomponenten und das Mapping wieder entfernen. Kommt die Fehlermeldung dann wieder?

Viele Grüße,

C. Klingbeil

0 Kudos

Hallo Carola,

Carola Klingbeil wrote:

Unser aktuelles Problem ist aber, dass weder das Mapping noch die Eingabekomponenten existieren. Wir müssten also erst einmal Formularfelder anlegen, dann das Mapping definieren und dann RepairReferences ausführen? Reicht es, wenn wir das einmal machen, auch wenn die Spalten in der Datenbank weiter bestehen und gefüllt bleiben? Ich würde danach gerne die Eingabekomponenten und das Mapping wieder entfernen. Kommt die Fehlermeldung dann wieder?

gibt es ggf. eine andere Tabellenvorlage zu dieser Tabelle? Evtl. eine technische Sicht die nicht für die Readaktuere verwendet wird? Wenn dieses Feld nicht mehr benötigt wird, kann es auch aus dem Schema entfernt werden.

Hallo Gerrit,

es gab auch keine andere Verwendung der Spalten. Aber das Entfernen der Spalten aus dem Schema hat geholfen, auch wenn das nicht wirklich unser Plan war, weil die Alt-Daten erhalten bleiben sollen. Wir haben die Eigenschaft von FirstSpirit genutzt, die Spalten im Schema zu löschen, aber in der Datenbank zu behalten. Somit sind die Fehler weg, aber die Alt-Daten in der DB noch vorhanden. Ist zwar ein komischer Fehler und ein noch seltsamerer Fix, aber gut dass wir den Fehler lösen konnten 😉 Danke.

Viele Grüße,

Carola Klingbeil

0 Kudos