Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: khing am 09.03.20 - 08:21:29

Titel: XPage -> Clienteingaben an Server senden
Beitrag von: khing am 09.03.20 - 08:21:29
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 (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
Titel: Re: XPage -> Clienteingaben an Server senden
Beitrag von: Sven Hasselbach am 09.03.20 - 14:12:34
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>
Titel: Re: XPage -> Clienteingaben an Server senden
Beitrag von: khing am 09.03.20 - 15:15:29
Hallo Sven,

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

Vielen Dank.

Gruß Kristian