Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: slecram am 14.02.07 - 09:13:14

Titel: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: slecram am 14.02.07 - 09:13:14
Hallo,
ich habe vor ein paar wochen schon einmal in einem anderen Forum mein Problem gepostet, bin aber leider nicht zu einer lösung des problems gekommen

Ich kann mir auch einfach nicht erklären, wieso das nicht funktioniert. Es ist ja keine "besondere" funktion.  :-:

Problem in vereinfachter Form:
Ich fülle ein berechnetes Feld (Field_1) in einer Web Applikation über einen Agenten mit einem Wert (hier: "Hallo") und speichere anschließend ab.

button_füllen:
@Command([ToolsRunMacro]; "(ag_füllen)")

(ag_füllen):
@SetField("Field_1";"Hallo");

button_speichern:
@Command([FileSave]);
@Command([FileCloseWindow)];

Wenn ich jetzt das Dokument öffne, ist das berechnete Feld leer. Er speichert als den Inhalt nicht richtig ab. Im Notes funktioniert das ganze.
Wenn ich das Feld "bearbeitbar" setze funzt es auch im web. aus sicherheitsgründen soll es aber berechnet sein.

Kann das mal einer nachstellen und gucken, ob das bei euch funzt?

Gruß und thx schon einmal
Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: ZaLudtske am 14.02.07 - 09:16:06
Ist das Feld 'berechnet', 'berechnet zur Anzeige' oder 'berechnet beim Anlegen'?

Rainer
Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: slecram am 14.02.07 - 09:18:16
funktioniert nicht, egal ob berechnet oder berechnet zur anzeige.

z.Z. Berechnet
Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: animate am 14.02.07 - 10:23:44
Theorie:

Wenn du ein Formular im Web speicherst werden ja nur die Werte übertragen, die in HTML-Input-Feldern in HTML-Form-Abschnitten stehen.
Ich vermute mal, dass ein berechnetes Feld nicht als Input - Tag gerendert wird, sondern einfach als statischer Text, und deshalb wird die Änderung auch nicht an den Domino Server übertragen und kann dort auch nicht gespeichert werden.


Lösen könntest du das Problem evtl. mit einer Kombination aus verstecktem Feld, in das du den Wert schreibst, und berechnetem Feld, das den Wert des versteckten Felds anzeigt.

Nachteil von dieser Lösung wäre, dass jemand mit Kentnissen der Kommunikation zwischen Browser und Web Server den Wert im versteckten Feld manipulieren könnte.
Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: slecram am 14.02.07 - 10:25:46
Hallo,
das habe ich schon probiert.
Das funktioniert auch soweit, bis ich das bearbeitbare "Quellfeld" im Web ausblende.

Dann ist das berechnete Feld auch wieder leer..

hat das mal einer von euch nach gestellt? würde gern wissen, ob es vielleicht an meiner Lotus Notes Version liegt...



ne möglichkeit, die ich noch auch schon probiert habe ist das Feld manuell per Durchgang-HTML einzubinden


<input type="text" name="field_1" value="field_1">
jetzt weiss ich nicht, wie ich das feld als berechnet setzen kann, oder wie ich den value ansprechen und somit mit einem agenten verändern kann...

Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: Otto am 14.02.07 - 11:00:09
setze das Feld auf 'bearbeitbar' und im Reiter '<HTML>' unter 'Andere' trägst Du 'readonly' ein

Gruss
Otto
Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: flaite am 14.02.07 - 11:02:50
Versuch mal "Generate Html for all fields" im zweiten Reiter der form zu aktivieren.
Falls das nicht funktioniert, erzähl ich dir einen zweiten Trick.  ;) (Otto hat das schon gemacht)


Und jetzt something completly different:

Diese ganzen Sachen sind aus Sicht des Entwicklers einer Web Anwendung magic.
Gibt aber heute - besonders für Mozilla - Tools, die dabei helfen die magic ein bischen transparenter zu machen.
Zum Bleistift zeigt Firebug genau an, welche Felder in einem HTTP-request übertragen werden.
Solche Tools sind
- im Grunde nicht so mühseelig in der Benutzung
- können in verschiedenen Umgebungen verwendet werden: Notes, Php, asp.net, java, everything web

Firebug kann definitiv das anzeigen, von dem Thomas spricht.

Vielleicht kann ich am WE mal ein Kurztutorial schreiben, mit dem man das in Notes nutzen kann. Will das sowieso noch besser beherrschen, weil ich das auch für POX (plain old xml) Webservices gegen Domino nutzen kann, die auf der Arbeit anstehen.

Gruß Axel
Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: umi am 14.02.07 - 11:08:15
Zur Klärung:
Berechnete Felder werden im Web als Text dargestellt und nicht als <input>.
Wenn Du das Quellfeld im Web ausblendest über die HideWhen properties, so wird das Feld nicht ins Web gerendert ( ausser im Formular ist angehakt, dass alle Felder im Web verfügbar sind ).

Wenn das Feld nicht als <input> gerendert wird, wird es beim Submit natürlich auch nicht mitgeliefert.

Möglichkeit 1:
Du versteckst das Feld via CSS - Style : { display:none;}

Als Durchganshtml müsste dann bei value="field_1" das Feld stehen oder ein Computed Text, welcher den Wert von field_1 berechnet.

Möglichkeit 2:
Du verwendest anstatt eines Agenten, Javascript um das Feld zu ändern.

Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: flaite am 14.02.07 - 11:25:53
@Urs: Mit der Schaltfläche "Generate HTML for all fields" wird imho aber schon ein input-element für in Notes verborgene Felder generiert.
Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: umi am 14.02.07 - 11:41:13
@Axel: stimmt "Generate HTML for all fields" generiert alle versteckten Felder als <input type="hidden"> ich wusste nur nicht mehr so genau wie das Häkchen hiess.
Titel: Re: Web: Speicherung berechnetes Feld geht nicht
Beitrag von: slecram am 14.02.07 - 13:21:22
Zur Klärung:
Berechnete Felder werden im Web als Text dargestellt und nicht als <input>.
Wenn Du das Quellfeld im Web ausblendest über die HideWhen properties, so wird das Feld nicht ins Web gerendert ( ausser im Formular ist angehakt, dass alle Felder im Web verfügbar sind ).

Wenn das Feld nicht als <input> gerendert wird, wird es beim Submit natürlich auch nicht mitgeliefert.

Möglichkeit 1:
Du versteckst das Feld via CSS - Style : { display:none;}

Als Durchganshtml müsste dann bei value="field_1" das Feld stehen oder ein Computed Text, welcher den Wert von field_1 berechnet.

Möglichkeit 2:
Du verwendest anstatt eines Agenten, Javascript um das Feld zu ändern.



alles klar... danke ;)