Autor Thema: XPage -> Clienteingaben an Server senden  (Gelesen 1791 mal)

Offline khing

  • Aktives Mitglied
  • ***
  • Beiträge: 110
  • Geschlecht: Männlich
XPage -> Clienteingaben an Server senden
« 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) 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
"Notes kann alles außer Kaffee kochen!"

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: XPage -> Clienteingaben an Server senden
« Antwort #1 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>

Offline khing

  • Aktives Mitglied
  • ***
  • Beiträge: 110
  • Geschlecht: Männlich
Re: XPage -> Clienteingaben an Server senden
« Antwort #2 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
"Notes kann alles außer Kaffee kochen!"

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz