Autor Thema: XPages: Unterschiedliche Datumseingabedarstellung bei verschiedenen Usern  (Gelesen 3242 mal)

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 254
  • Geschlecht: Männlich
Ich stehe mal wieder auf dem Schlauch und hoffe auf Euch Coder-Gurus.  8)

Folgendes Eingabefeld habe ich in einer CC einer XPage.
Code
<xp:inputText id="inpBirth" value="#{docUser.Birth}">
	<xp:dateTimeHelper id="dtHelper"></xp:dateTimeHelper>
	<xp:this.converter>
		<xp:convertDateTime type="date"></xp:convertDateTime>
	</xp:this.converter>
</xp:inputText>

Wenn ich die XPage als Entwickler (ACL 'Manager') zum Ändern öffne, erscheint das Feld wie erwartet mit dem Datum im Format DD.MM.YYYY und der Datumsauswahlbox (dateTimeHelper) dahinter. Öffne ich dieselbe XPage auf demselben Rechner/Browser als anderer (Test)-User (ACL 'Author') wird das Datum "umgekehrt" mit YYYY-MM-DD vorbelegt und die Datumsauswahlbox nicht angezeigt. Den Inhalt des Feldes kann ich dann ändern (wobei das Format korrigiert werden muss) und auch erfolgreich speichern.

Da es sich um den selben Rechner und denselben Browser handelt kann ich lokale Einstellungen ausschließen. Interessanterweise funktionieren Format und Datumsauswahlbox auf einer anderen XPage in derselben Anwendung für den Test-User. Den einzigen Unterschied, den ich erkenne, sind die unterschiedlichen Zugriffsebenen. Ansonsten dürfen beide User das Dokument ändern. Auch die Nutzung von IE oder FF ist davon unabhängig.

Ein ähnlicher Effekt tritt in einer ExtLib djextNameTextBox auf. Normalerweise werden dort gewählte Namen als "Buttons" dargestellt. Im obigen Fall, auf der selben XPage, aber als einfache Eingabebox.

Was könnte hier die Ursache sein? Ich bin mit meinen Ideen am Ende!
« Letzte Änderung: 11.09.17 - 17:03:06 von Flachmann »
Gruß,
  __________
  _/_
  /lachmann

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 254
  • Geschlecht: Männlich
Und wie erwartet sieht der erzeugte HTML-Code unterschiedlich aus.

Dies ist der HTML-Code des Feldes, wo es nicht funktioniert, also ohne Datumsauswahlschalter:
Code
<div id="view:_id1:_id2:_id5:_id68:facetInput">
	<input id="view:_id1:_id2:_id5:_id68:facetInput:inpBirth" class="form-control" value="1990-07-25"
						name="view:_id1:_id2:_id5:_id68:facetInput:inpBirth" dojotype="ibm.xsp.widget.layout.DateTextBox"
						iconstyleclass="xspInputFieldDatePickerIcon"
						constraints="{datePattern:"dd.MM.yyyy",timePattern:"HH:mm:ss",selector:"date"}" type="text">
</div>

Dies der viel längere Code, bei dem es funktioniert. Hier werden die Steuerelemente für die Datumsauswahl erzeugt.
Code
<div id="view:_id1:_id2:_id5:_id68:facetInput">
	<div id="widget_view:_id1:_id2:_id5:_id68:facetInput:inpBirth"
						class="dijit dijitReset dijitInline dijitLeft form-control dijitTextBox dijitComboBox dijitDateTextBox xspInputFieldEditBox dijitValidationTextBox"
						role="combobox" style="top:0px;height:16px" widgetid="view:_id1:_id2:_id5:_id68:facetInput:inpBirth" lang="de">
		<div class="dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer"
						data-dojo-attach-point="_buttonNode, _popupStateNode" role="presentation">
		<div class="dijitReset dijitValidationContainer">
			<input class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" value="? " tabindex="-1" readonly="readonly" role="presentation" type="text">
		</div>
		<div class="dijitReset dijitInputField dijitInputContainer">
			<input id="view:_id1:_id2:_id5:_id68:facetInput:inpBirth" class="dijitReset dijitInputInner" autocomplete="off" data-dojo-attach-point="textbox,focusNode"
						role="textbox" aria-haspopup="true" tabindex="0" value="25.07.1990" aria-invalid="false" type="text">
			<input name="view:_id1:_id2:_id5:_id68:facetInput:inpBirth" value="1990-07-25" type="hidden">
		</div>
	</div>
</div>

Gruß,
  __________
  _/_
  /lachmann

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 254
  • Geschlecht: Männlich
Hatte noch niemand dieses Phänomen oder eine Ideenursache? Ich finde es äußerst seltsam.  :-:

Ich habe auch mal Screenshots im Eidt-Modus angehängt, wie das Feld einmal als Admin (ACL 'Manager') und einmal als normaler User (ACL 'Author') aussieht. Es ist die selbe XPage, der selbe Datensatz, nur der EffectiveUser ein anderer. Beide User dürfen das Dokument ändern. - Aber einmal wird das Datum "lesbar" dargestellt, einmal nicht. Einmal mit Datumsauwahl, einmal nicht.
« Letzte Änderung: 13.09.17 - 10:41:18 von Flachmann »
Gruß,
  __________
  _/_
  /lachmann

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Ich habe mir das mal angeschaut, und der "normale" HTML Code, der vom Server ausgeliefert wird, ist der, der bei Dir ohne Datumsauswahl.
Das "funktionierende" Beispiel ist ja der Code, der dann durch Dojo danach im Browser generiert wird, daher tippe ich darauf, dass irgendein JavaScript-Fehler auftritt und Dojo mit in den Abgrund reißt. Was sagt den die JS Console im Browser?

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 254
  • Geschlecht: Männlich
Erst mal danke für Deine Unterstützung. In die Konsole hatte ich schon mal geschaut, aber nichts erkannt.  ::)  Bei beiden Users zeigt Firebug identischen Inhalt an. Die beiden 'not found' kommen wohl von irgendeiner fehlenden "de-de"-Language-Sache. Die kommen häufiger und sind wohl unkritisch.

POST https://myserver.com/Templates/MyApp.nsf/xpUser.xsp...&$$ajaxid=view%3A_id1%3A_id2%3AapplicationLayout   200 OK      63ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/responsive/dijit/xsp/bootstrap/NameTextBox.js   200 OK      52ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/responsive/dijit/xsp/bootstrap/ListTextBox.js   200 OK      75ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/ListTextBox.js      200 OK      51ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/_ListTextBox.js   200 OK      35ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/ExtLib.js      200 OK      41ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/nls/listbox.js      200 OK      51ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/nls/de/listbox.js      200 OK      41ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/nls/de-de/listbox.js         404 Not Found   15ms
"NetworkError: 404 Not Found - https://myserver.com/xsp/.ibmxspres/.extlib/dijit/nls/de-de/listbox.js"
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/templates/ListTextBox.html   200 OK         13ms
...
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/nls/de/pickers.js            200 OK         10ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/nls/de-de/pickers.js         404 Not Found   16ms
"NetworkError: 404 Not Found - https://myserver.com/xsp/.ibmxspres/.extlib/dijit/nls/de-de/pickers.js"
GET https://myserver.com/xsp/.ibmxspres/.extlib/dijit/templates/PickerName.html      200 OK      58ms
GET https://myserver.com/xsp/.ibmxspres/.extlib/responsive/dijit/xsp/bootstrap/templates/PickerName.html      200 OK      46ms
GET https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/ibm/xsp/widget/layout/DateTextBox.js   200 OK      59ms
...


Darum habe ich mal mit der im FF eingebauten Konsole geschaut. Meldungen sehen optisch etwas anders aus, sind inhaltlich aber identisch. Allerdings wird hier beim Test-User eine Fehlermeldung ('dojo/parser::parse() error') ausgegeben, die beim Admin-User nicht kommt:
...
XML-Verarbeitungsfehler: Doppeltes Attribut
Adresse: https://server.com/xsp/.ibmxspres/.extlib/responsive/dijit/xsp/bootstrap/templates/PickerName.html Zeile Nr. 32, Spalte 159:         PickerName.html:32:159

dojo/parser::parse() error ReferenceError: view__id1__id2__id5__id12__id22_facetColumn__id24 is not defined            @Ff&@Fi&@B3c&@Im.js:432:9501
Stack-Trace:
@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js line 432 > eval:1:2
_11@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:432:326
$DDSv_@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:432:4488
$DDSu_/_37<@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:432:2050
$DDSY_@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:138451
$DDSu_@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:432:1879
$DDSz_/p<@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:432:9392
_45c@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118591
_45b/_469.then@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:120499
$DDSz_@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:432:9299
x_pd@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:447:25982
x_rn@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:447:25084
xfpre_l@https://myserver.com/xsp/.ibmxspres/.mini/dojo-1.9.7/.de-de/@Ff&@Fi&@B3c&@Im.js:447:20996
$DDX2_/<@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:113514
_188@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:36775
_186@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:36467
dojo/_base/Deferred/</dojo.Deferred/this.callback@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:37532
_188@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:37031
_186@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:36467
dojo/_base/Deferred/</dojo.Deferred/this.callback@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:37532
$DDX7_/<@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:116280
_45c@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118591
_456@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118455
$DDXW_@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:119930
_462@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:119192
_45c@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118807
_456@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118455
$DDXW_@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:119930
_462@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:119192
_45c@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118872
_456@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118455
$DDXW_@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:119930
_462@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:119192
_45c@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118807
_456@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:118455
$DDXW_@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:119930
_390@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:95835
_39c@https://myserver.com/xsp/.ibmxspres/dojoroot-1.9.7/dojo/dojo.js:15:96161
  @Ff&@Fi&@B3c&@Im.js:432:9501

        

Gruß,
  __________
  _/_
  /lachmann

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Zitat
dojo/parser::parse() error ReferenceError: view__id1__id2__id5__id12__id22_facetColumn__id24 is not defined            @Ff&@Fi&@B3c&@Im.js:432:9501
Gibt es Unterschiede der gerenderten/geladenen Komponenten basierend auf dem Zugriffslevel?



Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 254
  • Geschlecht: Männlich
Ja, cool! Das war's!!!  :D Vielen Dank für Deine Denkanstöße!

Weiter vorne in der Seite gab es ein Feld mit Type-ahead. Aufgrund der geringeren Rechte darf der User dieses Feld aber nicht ändern. Obowohl das Feld dem User read-only angezeigt wird, hat Domino die Type-ahead-Logik erstellt, und zwar mit dieser ominösen 'facetColumn__id24'. Da das Feld aber im Lesemodus ist, wird die nicht generiert.

Fehlerhaft mit Type-ahead im Lesemodus:
Code
<input type="text" value="XP22" id="view:_id1:_id2:_id5:_id12:_id22:facetColumn:inpLevel" 
name="view:_id1:_id2:_id5:_id12:_id22:facetColumn:inpLevel" readonly="readonly" class="form-control" 
dojoType="ibm.xsp.widget.layout.TypeAhead" store="view__id1__id2__id5__id12__id22_facetColumn__id24" 
searchDelay="0">

Ohne Type-ahead:
Code
<input type="text" value="XP22" id="view:_id1:_id2:_id5:_id12:_id22:facetColumn:inpLevel" 
name="view:_id1:_id2:_id5:_id12:_id22:facetColumn:inpLevel" readonly="readonly" class="form-control">

Offensichtlich kam es dadurch zu einem Dojo-Hänger und die anderen Controls wurden nicht mehr richtig erstellt.
Gruß,
  __________
  _/_
  /lachmann

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz