Domino 9 und frühere Versionen > ND9: Entwicklung

XPage -> Clienteingaben an Server senden

(1/1)

khing:
Guten Morgen,

ich knobel im Moment an einem XPage-Problem, wo ich nicht recht weiter komme.

Mittels eines popupMenüs auf einem Feld ändere ich einen Dokumentenstatus mit einem Agent im Backend. Dazu nutze ich context.getSubmittedValue() via SSJS, um die Menüpunkte zu unterscheiden.
Nun muss ich aber noch in bestimmten Situationen einen Begründungstext vom User abfragen und diesen mit übermitteln. Und da ensteht mein Problem. Gedacht hatte ich mir, einen Dialog via CSJS zu öffnen dann an den Server zu übermitteln. Aber eine richtig praktikable Lösung habe ich nicht gefunden.
Hier (https://stackoverflow.com/questions/39022798/how-to-get-submitted-value-with-csjs-on-xpage) in Antwort 2 wird das mittels Buttons gelöst aber nun möchte ich zu meinen Menüpunkten nicht noch genauso viele Buttons anlegen. Via SSJS habe ich das Problem, dass zwar mein Dialog geöffnet wird aber der Rest vom Agentenaufruf nicht klappt.

Habt ihr da eine bessere Lösung?

Gruß Kristian

Sven Hasselbach:
Ich habe mal dein SO-Beispiel modifiziert.

1. Das inputHidden - Element wird für den Transport der Nachricht verwendet
2. Der onItemClick - EventHandler hat eine ID bekommen, um in ansprechen zu können
3. Die übertragene Nachricht ist hardcoded; da es aber CSJS ist, kannst Du hier deine Eingabe vom User abfragen



--- Code: ---<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex">

<xp:button
value="Label"
id="button1">
<xp:eventHandler
event="onclick"
submit="false">
<xp:this.script><![CDATA[
            XSP.openMenu(thisEvent,#{javascript:getComponent('popupMenu').getMenuCtor()});
            ]]></xp:this.script>
</xp:eventHandler>
</xp:button>

<xe:popupMenu
id="popupMenu">
<xe:this.treeNodes>
<xe:basicLeafNode
label="menu item 1"
submitValue="mi1">
<xe:this.onClick>
<![CDATA[
                                                XSP.getElementById('#{id:inputHiddenMessage}').value = 'Message Menu 1';
    XSP.setSubmitValue('mi1');
    XSP.fireEvent(arguments[0], '#{id:onItemClick}', '#{id:popupMenu}', null, true, 2, null);
    ]]>
    </xe:this.onClick>
</xe:basicLeafNode>
</xe:this.treeNodes>

<xp:eventHandler
event="onItemClick"
submit="true"
refreshMode="complete"
id="onItemClick">
<xe:this.action>
       <![CDATA[#{javascript:
                              print("Message: " + requestScope.message);
                           }]]>
                        </xe:this.action>
</xp:eventHandler>

</xe:popupMenu>

<xp:inputHidden
id="inputHiddenMessage"
value="#{requestScope.message}"></xp:inputHidden>

</xp:view>

--- Ende Code ---

khing:
Hallo Sven,

das sieht sehr gut aus. Ich werde es morgen mal einbauen.  ;D

Vielen Dank.

Gruß Kristian

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln