Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: MLoy am 26.11.15 - 10:48:03

Titel: Felder in einer XPages leeren sich
Beitrag von: MLoy am 26.11.15 - 10:48:03
Hallo,

ich hab hier ein merkwürdiges Problem.

In einer XPage gibt es mehrere bearbeitbare Testfelder (Beispiel siehe unten).

Kurze Erklärung:

Bitte jetzt nicht nach Sinnhaftigkeit o.ä. fragen. Der Kunde braucht das genau so.

Grundsätzlich funktioniert das Ganze sehr gut.
Allerdings kommt es vor, dass während der Eingabe das Feld (und auch alle anderen Textfelder in der XPage) geleert werden.
Nach drücken der F5-Taste tauchen die Inhalte dann (meistens) wieder auf.

Hat jemand eine Idee?
Der Fehler tritt bei manchen Usern verstärkt auf, mein manchen nie (bei identischen Browsern).
Auch mit aktiviertem bzw deaktiviertem Cache wurde getestet.

Vielen Dank & Viele Grüße
Marcus


Code
<xp:inputText
	id="Strasse_1"
	tabindex="1">
	<xp:eventHandler
		event="oninput"
		submit="true"
		refreshMode="partial"
		refreshId="Adresse_OK_1"
		id="eventHandler21">
		<xp:this.action>
			<![CDATA[#{javascript:getComponent("Adresse_OK_1").setRendered(false)}]]>
		</xp:this.action>
	</xp:eventHandler>
	<xp:this.styleClass>
		<![CDATA[#{javascript:return fieldValidate(this);}]]>
	</xp:this.styleClass>
	<xp:eventHandler
		event="onblur"
		submit="true"
		refreshMode="partial"
		refreshId="Strasse_1"
		id="eventHandler47">
	</xp:eventHandler>
</xp:inputText>


Code
XPage Properties:
xsp.ajax.renderwholetree=false
xsp.client.script.radioCheckbox.ie.onchange.trigger=early-onclick
xsp.error.page.default=true
xsp.library.depends=com.ibm.xsp.extlib.library,org.openntf.xsp.bootstrap.library,com.ibm.xsp.extlib.relational.library
xsp.persistence.mode=basic
xsp.resources.aggregate=true
xsp.theme=oneuiv2.1
xsp.session.timeout=120
xsp.partial.update.timeout=120
Titel: Re: Felder in einer XPages leeren sich
Beitrag von: Tim Pistor am 26.11.15 - 11:08:52
Muss es denn sein, dass bei jedem Tastendruck eine Kommunikation mit dem Server angestoßen wird? Könnte man das Icon (zumindest während der Bearbeitungsphase) nicht auch clientseitig ausblenden?

Je nach Tippgeschwindigkeit und Reaktionszeit wird der arme Server da wohl nicht hinterherkommen...

Ergänzung: Schau dir mal beim Tippen in diesen Feldern via FireBug o.ä. die Konsole oder den Reiter Netzwerk an. Da müsste es, wenn ich das so richtig interpretiere, "ganz schön abgehen"...

Titel: Re: Felder in einer XPages leeren sich
Beitrag von: MLoy am 02.12.15 - 07:24:14
Das Problem ist nur, dass ich an einer anderen Stelle im SSJS wissen muss ob sich was geändert hat, sprich ob Icon ein bzw. ausgeblendet ist.
Eigentlich würde es ja auch reichen im onChange das Icon auszublenden, allerdings hab ich dann das Problem das der User, wenn er das Feld verlässt um beispielsweise einen Button anzuklicken, den Button 2 mal anklicken muss, damit der dort hinterlegte Code ausgeführt wird
Titel: Re: Felder in einer XPages leeren sich
Beitrag von: Tim Pistor am 02.12.15 - 08:18:51
Das Problem ist nur, dass ich an einer anderen Stelle im SSJS wissen muss ob sich was geändert hat, sprich ob Icon ein bzw. ausgeblendet ist.

Ohne das "große Ganze" zu kennen kann man da leider nur schwer weiterhelfen. Sobald SSJS im Spiel wäre, werden die Formulardaten ja eh übertragen und kannst dir den Feldwert holen.

... allerdings hab ich dann das Problem das der User, wenn er das Feld verlässt um beispielsweise einen Button anzuklicken, den Button 2 mal anklicken muss, damit der dort hinterlegte Code ausgeführt wird

Klingt nach dem Problem mit 2 parallelen Ajax-Calls gegen die XPage. Das geht nie gut. Gleichzeitig das Icon aktualisieren und den Button ausführen. Das ist ein Wettrennen... Firebug (etc.) würde das gut verdeutlichen..

Code
...<![CDATA[#{javascript:getComponent("Adresse_OK_1").setRendered(false)}]]>...

Was passiert eig. wenn das Feld erst leer ist... du "123" eingibst, und es dannach wieder löscht. Wird das Icon dann wieder eingeblendet?

Titel: Re: Felder in einer XPages leeren sich
Beitrag von: Sven Hasselbach am 02.12.15 - 08:38:27

... allerdings hab ich dann das Problem das der User, wenn er das Feld verlässt um beispielsweise einen Button anzuklicken, den Button 2 mal anklicken muss, damit der dort hinterlegte Code ausgeführt wird

Klingt nach dem Problem mit 2 parallelen Ajax-Calls gegen die XPage. Das geht nie gut. Gleichzeitig das Icon aktualisieren und den Button ausführen. Das ist ein Wettrennen... Firebug (etc.) würde das gut verdeutlichen..

Hört sich eher nach geblockten Partial Refreshs an, so dass der erste Klick gar nicht erst ausgeführt wird.

Was mich verwundert ist, dass das überhaupt funktionieren soll; wurde die Komponente Adresse_OK_1 auf rendered = false gesetzt, geht der Partial Refresh des oninput events ins Leere...
Titel: Re: Felder in einer XPages leeren sich
Beitrag von: Tim Pistor am 02.12.15 - 08:57:03
stimmt. Da sollte dann sowas kommen...
Titel: Re: Felder in einer XPages leeren sich
Beitrag von: MLoy am 03.12.15 - 15:23:34


Was mich verwundert ist, dass das überhaupt funktionieren soll; wurde die Komponente Adresse_OK_1 auf rendered = false gesetzt, geht der Partial Refresh des oninput events ins Leere...
@Sven: Eingeblendet wird das Icon dann wieder anderweitig.


Ich glaub ich hol mal (fachlich) ein bisschen weiter aus, dann wird es vielleicht etwas klarer warum ich sowas in der Art überhaupt benötige

Es geht im Groben um Adressprüfungen.

Ablauf (Auszug)
1. Adressen eingeben (Strasse, Plz, Ort)
2. Klick auf Button
3. Per Google wird die Adresse geokodiert und ggf. vervollständigt
4. zusätzlich werden die entsprechenden Koordinaten (LAT/LNG) abgelegt (wird später zur Streckenberechnung verwendet)
5. Das Icon "Adresse gültig" wird eingeblendet
6. Sollte der User jetzt die Strasse, Ort...  verändern sind die Koordinaten natürlich ungültig und das Icon muss ausgeblendet werden
7. Damit nachfolgende Funktionen (Streckenberechung zum Kunden usw.) ausgeführt werden können muss ein Kennzeichen für eine gültige Adresse vorhanden sein, sprich der Button müsste in diesem Fall erneut gedrückt werden.

Ich bin gerade am überlegen ob ich die ganze Ecke nicht umbaue.
Folgende Idee hab ich gerade im Kopf:
1. Nach betätigen des Knopfes werden die Adressfelder gesperrt und der Button zur Prüfung wird ausgeblendet.
2. Gleichzeitig wird ein weiterer Button eingeblendet, über den die Adresse wieder zur Bearbeitung "geöffnet" werden kann.

So hätte ich auch ein Kennzeichen ob es sich im eine gültige Adresse handelt und ich muss mich an keinerlei Events der Textfelder hängen.
Macht glaub ich mehr Sinn.
Was haltet ihr davon?

Gruß
Marcus
Titel: Re: Felder in einer XPages leeren sich
Beitrag von: Sven Hasselbach am 03.12.15 - 16:00:28
Was mich verwundert ist, dass das überhaupt funktionieren soll; wurde die Komponente Adresse_OK_1 auf rendered = false gesetzt, geht der Partial Refresh des oninput events ins Leere...
@Sven: Eingeblendet wird das Icon dann wieder anderweitig.
Also hat der Code oben gar nichts mit dem Problem zu tun?
Titel: Re: Felder in einer XPages leeren sich
Beitrag von: MLoy am 03.12.15 - 16:04:40
Was mich verwundert ist, dass das überhaupt funktionieren soll; wurde die Komponente Adresse_OK_1 auf rendered = false gesetzt, geht der Partial Refresh des oninput events ins Leere...
@Sven: Eingeblendet wird das Icon dann wieder anderweitig.
Also hat der Code oben gar nichts mit dem Problem zu tun?
Das kann ich eben nicht sagen ob es damit zu tun hat. Ich hab nur vermutet, dass durch die zahllosen Partial Refreshs die durch die Textfelder ausgelöst werden das Problem mit den leeren Felder entsteht, sicher bin ich mir da nicht. Leider kann ich es auch nicht nachstellen, es tritt eben nur sporadisch auf
Titel: Re: Felder in einer XPages leeren sich
Beitrag von: Sven Hasselbach am 03.12.15 - 16:12:04
Der Code geht nicht. Kann man ganz einfach nachstellen: Einfach auf ne neue XPage einfügen, und ein Label hinzufügen mit der Id Adresse_OK_1.
Ein paar Zeichen eintippeln, und Fehlermeldung abwarten.
Titel: Re: Felder in einer XPages leeren sich
Beitrag von: MLoy am 03.12.15 - 16:33:10
Bei mir kommt der Fehler auch, wenn ich den Code in eine leere XPage kopiere.
Seltsam, wenn ich den Code in der CustomControl (den gesamten Code kann ich leider nicht posten) habe kommt kein Fehler  ???
Wie kann denn das sein?