online feedbacks

Documentation

formgen Expert FAQ

Warum wird die Startseite angezeigt, obwohl die Option "Startseite immer anzeigen" nicht gesetzt ist?

Wenn in den Eigenschaften des Fragebogens die Option "Ausfüllen" auf "Mehrfachausfüllen NICHT erlaubt" gesetzt ist, wird die Startseite immer angezeigt. Auf der Startseite wird abgefragt, ob der Teilnehmer den Fragebogen bereits ausgefüllt hat oder nicht.
Wie in dem folgenden Beispiel-Code kann abgefragt werden, ob der Fragebogen teilweise oder komplett ausgefüllt wurde.
[if_equal responseStatus O]
[set message]Sie haben Teile des Fragebogens schon ausgefüllt![/set]
[/if_equal]
[if_equal responseStatus A]
[set message]Sie haben den gesamten Fragebogen schon ausgefüllt![/set]
[/if_equal]
<p><b>[out message/]</b></p>
Mit dem Tag [cond canEnterQuestionaire] ... [/cond] kann abgefragt werden, ob der Teilnehmer den Fragebogen öffnen darf:
[cond canEnterQuestionaire]
[href qdisplay.jsp]Klicken Sie hier um die Umfrage zu starten.[/href]
[/cond]
[cond not canEnterQuestionaire]
Sie haben bereits teilgenommen.
[/cond]


Wie wird die Endeseite definiert?

In den Eigenschaften des Fragebogens die Option "Nach Fragebogen" auf "Endeseite anzeigen" setzen. Den Text für die Endeseite bei Start-/Endeseite setzen.
In den Eigenschaften des Styles kann mit folgendem Code abgefragt werden, ob die Start- oder Endeseite angezeigt werden soll.
[cond isStartPage] hier stehen spezielle Startseitenoptionen[/cond]
[cond isEndPage]hier stehen spezielle Endeseitenoptionen[/cond]
Ausgabe des im Fragebogen definiertem Inhalt: [out body/]
Anm.: die Variable "startBody" existiert wegen der Abwärtskompatibilität weiterhin.


Wie blendet man Antwortmöglichkeiten ein/aus?

Dazu gibt es spezielle Befehle, welche in der Display-Regel verwendet werden.
Alle Antworten sind erstmal sichtbar. Am einfachsten weist man den Antworten in dem Feld Gruppe verschiedene logische Gruppenbezeichner zu (z.B. a, b und c). Mit dem Befehl
showAnswerGroup("a");
werden alle Antworten angezeigt bei denen "a" in dem Feld Gruppe vorkommt, Antworten bei denen Gruppe leer ist, werden immer angezeigt, alle anderen Antworten werden unsichtbar.

Weitere Befehle sind:
hideAnswer(String id) // Zeigt eine Antwortmöglichkeit der aktuellen Frage nicht an.
showAnswersFromVariable(String var) // Zeigt Antworten anhand der Gruppe und Variable.


Wie wird eine Sprachumschaltung realisiert?

Die Sprache kann beim Einstieg in den Fragebogen über die Parameter "lang" gesetzt werden.
Der folgende Beispiel-Code kann z.B. auf der Startseite des Fragebogens eingesetzt werden. Der Code erzeugt Links, die die Sprache umschalten.
[questionaire languageselect/]


Wieso sind Änderungen am Fragebogen nicht sofort sichtbar?

Nicht jedesmal wenn ein Fragebogen aufgemacht wird, wird die komplette Definition aus der Datenbank gelesen.
Es gibt einen Cache, der diese Definition für 2 Stunden zwischenspeichert.
Um diesen Eintrag im Cache für ungültig zu erklären und eine frische Kopie aus der Datenbank zu lesen, muss einmal der Menüpunkt "Fragebogen/Testen" verwendet werden.


Wie integriert man einen Prozent- oder Fortschrittsbalken?

Dazu gibt es ein spezielles Taglet, welches im Style an gewünschter Stelle platziert werden kann. Z.B.:
[percentage -color #930000 -bgcolor #000000 -class balken $progress/]
Die Variable progress ist eine Zahl zwischen 0 und 100 und gibt den Fortschritt innerhalb des Fragebogens in Prozent an. Die Parameter color, bgcolor und class sind optional, so dass die einfachste Form lautet:
[percentage $progress/]


Wie kann der Teilnehmer zwischenspeichern und später weitermachen?

Hier gelten folgende Regeln:

1.) Wenn nach jeder Fragebogenseite gespeichert wird (Einstellungen im Fragebogen), so kann der Teilnehmer jederzeit wieder in den Fragebogen einsteigen.

2.) Wenn nur am Ende jedes Fragebogens gespeichert wird, so kann ein spezieller Speichern Button im Style platziert werden, um dem Teilnehmer die Möglichkeit des Zwischenspeicherns zu geben:
<input type=submit name="[out savePointName/]" value="restliche Seiten später ausfüllen">


Wie bindet man grafische Blätter-Buttons ein?

Im Style die normalen Buttons durch folgende ersetzen:
<input type=image name="[out prevPageName/]" src="pics/zurueckbild.gif">
<input type=image name="[out nextPageName/]" src="pics/weiterbild.gif">


Wie erzeugt man ein Fehlerpopup?

Folgender Aufruf sollte dann im Style stehen:
...
[cond questionaireError]
  <script type="text/javascript">
  window.open('[href inputerror.jsp/]','Eingabefehler', 'scrollbars=yes,resizable=no,screenX=20,screenY=20,width=230,height=230').focus();
  </script>
[/cond]
Dieser Code öffnet ein Popup Fenster, falls im Fragebogen ein Fehler auftritt.


Wie erstellt man eine versteckte/nicht sichtbare Frage?

Dazu muss man ein Template erzeugen, welches keine Ausgabe erzeugt also keinen HTML Text enthält. Das setzen der Display-Condition auf "return false;" zeigt zwar die Frage nicht an, speichert aber auch das Ergebnis nicht!


Wie kann man einen Fragebogen mit einer eigenen User-ID aufrufen?

Dazu werden die User-ID, die Fragebogen-ID und ein Passwort mit einem MD5 Hash gegen Manipulationen gesichert und an formgen übergeben. formgen speichert dann die Ergebnisse des Fragebogen unter dieser User-ID.
Genaueres findet sich unter Aufruf und Integration.


Wie prüft man eine E-Mail-Adresse auf ihre Gültigkeit?

Mit boolean isValidEmail(String email) kann eine E-Mail-Adresse auf ihre Gültigkeit geprüft werden.
Dafür muß in der Datei formgen.ini im Verzeichnis WEB-INF/classes der Eintrag com.pilodata.util.MailCheck.strNameserver vorhanden sein. z.B.:
com.pilodata.util.MailCheck.strNameserver = 10.10.10.11
Die Prüfung der E-Mail erfolgt nur für die Domäne der E-Mail, also z.B. "gmx.de", nicht für den Teil vor dem @!


Unter welcher URL ist der Fragebogen zu erreichen?

Der Einstieg in den Fragebogen ist über die /formgen.jsp Seite möglich.
Die genauen Parameter können unter Fragebogen/Testen herauskopiert werden.


Wenn Validierungsfunktionen in der Frage benutzt werden, dann braucht der Fragebogen länger bis er dargestellt wird.

Das liegt am Java Compiler.
formgen ruft einen Java Compiler auf und compilert die Klassen in ein Arbeitsverzeichnis. Dazu muss formgen aber seine eigenen Klassen im Classpath haben. Das Kopieren der formgen.jar in das jeweilige webapps/lib Verzeichnis reicht hierzu nicht aus! Die formgen.jar sollte in einem Verzeichnis liegen, welches sich auch explizit im Classpath befindet.
Nachtrag: Wir haben formgen einen Klassencache verpasst, der die Klassen nur einmal kompiliert. Dies führt zu einer erheblichen Steigerung der Darstellungsgeschwindigkeit (beim erstem Mal)!


Wie schalte ich den Fragebogen nach erreichen einer Quote offline?

Automatische Beendigung der Umfrage

Folgenden Code einfügen in Fragebogen->Optionen->Control-Script

Beispiel 1: Nach Anzahl ausgefüllter Fragebögen
void enter(TagletContext ctx){
  int anzahl = condition.statCountFinished();
  if(anzahl >= 1000){
    condition.setOnlineStatus(false);
  }
}

Beispiel 2: Nach Anzahl beantworteter Fragen, wobei que_code der Kurzcode der relevanten Frage ist
void enter(TagletContext ctx){
  int anzahl = condition.statCountQuestion("que_code");
  if(anzahl >= 1000){
    condition.setOnlineStatus(false);
  }
}


Wie kann ich Fragen zufällig auf Seiten anordnen?



Falsche Zeichen oder Umlaute mit Tomcat 6!

Der Tomcat 6 hält sich in der Standardinstallation nicht mehr (wie all seine Vorgänger) an die Servlet API. Deswegen wird der charset Header im Content-type nicht gesetzt und es kann zu Fehlinterpretationen des Browsers kommen.
Durch setzen einer Java System Property bei Start der VM kann das konforme Verhalten wieder eingeschaltet werden
org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true
also
set CATALINA_OPTS="-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true"


Warum erscheint fgadmin immer auf Englisch?

Das liegt am Browser.
fgadmin versucht nach dem Einloggen anhand der Spracheinstellung des Browsers eine Sprache zu ermitteln.
Da der Netscape Navigator oder Mozilla Englisch als Standardeinstellung haben, erscheinen die Menüs auch auf Englisch.
Ändern Sie die Sprache in Ihrem Browser auf Deutsch!


Wie ändert man die Texte der Oberfläche, bzw. bindet andere Sprachen ein?

Die Texte in der formgen Oberfläche werden über sog. "ResourceBundles" verwaltet.
Jedes Bundle besteht aus einem Satz von Dateien in dem Schlüssel und Klartext eingetragen sind.
Beispiel: Der Begriff "Fragebogen" ist über den Schlüssel "global.questionaire" kodiert.
Für jede Sprache kann eine Datei mit den ISO-Sprachcode existieren, in der "global.questionaire" dann in die jeweilige Sprache übersetzt wird.

Die Resource Dateien befinden sich im Classpath unter /WEB-INF/classes/resources/.
Die Dateien haben alle die Namen "resources*.properties".
Sprachabhängige Varianten haben die Namen "resources_.properties", z.B. "resources_en.properties".
Diese Files werden von uns gepflegt und werden bei Updates auch überschrieben.

Zur dauerhaften Veränderung von Texten oder neuen Übersetzungen können auch Bundles mit den Namen "resources_custom*.properties" vorliegen. Diese können Sie komplett verändern und werden zuerst bei Übersetzungen verwendet.
Falls Sie z.B. selbst eine spanische Übersetzung der Texte angefertigt haben, so speichern Sie diese unter "resources_custom_es.properties". Sobald der Benutzer Spanisch gewählt hat, erscheinen Ihre Texte.
Der Tomcat muss dazu neu gestartet werden.

Um die umzuschaltenden Sprachen in der Menüleiste oben zu konfigurieren muss in der application.properties folgender Eintrag hinzugefügt werden:
# Languages
application.languages=de,en,es
Die Codes entsprechen den gängigen 2-stelligen ISO Sprachcodes (Liste hier).
Die Sprachen werden dann in dieser Reihenfolge angezeigt. Die Grafikdatei der Fahne ergibt sich aus dem Code.


Wie verhindert man einen "java.lang.OutOfMemoryError"?

Java erhält normalerweise beim Start maximal 32MB Arbeitsspeicher. Dies ist zusammen mit der Servlet Engine und formgen ziemlich wenig. Deshalb sollte man hier mehr Speicher einstellen.
Beim Aufruf von Java geht dies über folgende Option:
java -Xmx(mem)m
Folgende Zeile gibt Java maximal 128MB Speicher:
java -Xmx128m

Jetzt muss diese Option noch bei Start von Tomcat gesetzt werden.
Fügen Sie in der startup.sh oder startup.cmd folgenden Zeile ein:

  1. Für Tomcat3
  2. export TOMCAT_OPTS='-Xmx128m'
    
  3. Für Tomcat4
  4. export CATALINA_OPTS='-Xmx128m'
    
Tomcat setzt dann diese Option beim Starten von Java.

Wie ändere ich den Session-Timeout der Servlet-Engine?

In der web.xml folgenden Eintrag hinzufügen oder ändern:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
Die Zahl gibt den Timeout in Minuten an.


Die Konfigurationsdatei formgen.ini wird nicht gefunden!

Die formgen.ini sollte sich unter /WEB-INF/classes befinden. Alternativ kann die formgen.ini auch im Classpath liegen!


Was hat die formgen.ini für ein Format?

Die formgen.ini ist im Stile einer Property Datei aufgebaut:
Syntax:
{Object} = {Wert}

Beispiel:
com.pilodata.parser.taglet.MailTaglet.active = true
Damit werden statische Membervariablen auf einen bestimmten Wert gesetzt. Die meisten Defaultwerte dieser Variablen sind sinnvoll. Andere müssen explizit überschrieben werden (wie z.B. der Mailserver).