问题
I will describe shortly my little project application:
the main doc. content is Cdoc
( datasource which contains fields + a button ). This button displays a dialog which is Pdoc
( a datasource ) - before showing the button I will save the doc. to get the UNID and then I will pass it to the Pdoc
, I want to link the Cdoc
and Pdoc
with the UNID.
My button which shows the dialog:
<xp:button value="Adding Pdoc from the dialog" id="button3"
styleClass="lotusFormButton" refreshMode="partial">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="computedField3">
<xp:this.action><![CDATA[#{javascript: if ( Cdoc.isNewNote() ) { Cdoc.save(); }
Cdoc.setValue("computedField3",Cdoc.getDocument().getUniversalID());
getComponent('exampleDialog').show()}]]></xp:this.action>
</xp:eventHandler>
The dialog / Pdoc
contains just 1 button: Save
( because the X
button is implicitly added to the dialog )
<xp:button value="Salvare" id="button6" styleClass="lotusFormButton">
<xp:eventHandler event="onclick"
submit="true" refreshMode="partial" immediate="false"
save="false" refreshId="viewPanel1">
<xp:this.action><![CDATA[#{javascript:Pdoc.save();
getComponent('exampleDialog').hide();
}]]>
</xp:this.action>
</xp:eventHandler>
So, it saves the docs. from Pdoc
and they are displayed in an embedded view from Cdoc
.
The main. doc Cdoc
contains also 2 (actions) buttons:
Cancel: redirect to Previous Page.
and
Save
<xp:button value="Salvare" id="buttonSave" styleClass="lotusFormButton" rendered="#{javascript:currentDocument.isEditable()}">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" immediate="false" save="true"
id="eventHandler1">
<xp:this.action><![CDATA[#{javascript:if (Cdoc.getItemValueString("txt_UNID")!= "") {
Cdoc.save();
}
facesContext.getExternalContext().redirect("http://ourserver.ro/XApp.nsf/view.xsp")
}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
The problem is:
Let say I'll create 3 docs. from Pdoc
from the dialog, the Cdoc. is already saved ( because the UNID was obtained ). If I save then using Cdoc
Save,
my main view panel from view.xsp
will display:
one doc.
Cdoc
with its 3Pdoc
docs. ( I need just this case to be displayed )another
Cdoc
( I guess when I first obtain the UNID and I saved theCdoc
to obtain the UNID, this is theCdoc
in this case. Btw, if I save againCdoc
using theSave
button , will the UNID will change ? ) and one empty ( don't know why )Pdoc
from the dialog.
How should my Save
button from Cdoc
should be like? Should I change also the Save
from Pdoc
button?
Thanks for your time.
回答1:
I believe save="true" on a button will submit and save all datasources on the page. That could explain spurious Pdoc documents. You're calling the save in script, so you don't need save="true" - you can just use a normal Button type rather than Submit type for the button.
Once a Document has been saved, the UNID will not be changed.
来源:https://stackoverflow.com/questions/24400934/xpages-save-cancel-actions-scenario