Ich stehe mal wieder auf dem Schlauch und hoffe auf Euch Coder-Gurus. 8)
Folgendes Eingabefeld habe ich in einer CC einer XPage.
<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!
Und wie erwartet sieht der erzeugte HTML-Code unterschiedlich aus.
Dies ist der HTML-Code des Feldes, wo es nicht funktioniert, also ohne Datumsauswahlschalter:
<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.
<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>
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:
<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:
<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.