互いに関連する 3 つのコンボボックスを含む Xpage があります。Combobox1 の onchange イベントでは、combobox2 の部分的な更新が行われます (combobox2 の dblookup のキーは、combobox1 の値であるため)。サーバーオプションとして、「データを検証または更新しない」コンボボックス2および3と同じです。次に、コンボボックスの送信された値を取得し、これらの値でドキュメントを保存するボタンがあります。問題: コンボボックス 1 の値を取得して [保存] ボタンをクリックすると、ドキュメントが保存されます。2 番目と 3 番目のボタンをクリックすると、ドキュメントを保存できなくなります。エラー メッセージも表示されません。編集 ; コードの簡略版:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:br></xp:br>
<xp:this.data>
<xp:dominoDocument var="document1" formName="bestelbon"></xp :dominoDocument>
</xp:this.data>
<xp:table>
<xp:tr>
<xp:td><xp:comboBox id="comboBox1" value="#{sessionScope.item}">
<xp:selectItem itemLabel="Please select">
</xp:selectItem><xp:selectItems id="selectItems2">
<xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn("product/Bestelbon.nsf","item",1));
}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="comboBox2" immediate="true">
</xp:eventHandler>
</xp:comboBox></xp:td>
<xp:td><xp:comboBox id="comboBox2" value="#{sessionScope.subitem}">
<xp:selectItem itemLabel="Please select">
</xp:selectItem>
<xp:selectItems id="selectItems3">
<xp:this.value><![CDATA[#{javascript:var combo1 = getComponent("comboBox1").getSubmittedValue();
@Unique(@DbLookup("product/Bestelbon.nsf","subitem2",combo1,2));
}]]></xp:this.value>
</xp:selectItems>
<xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="comboBox3" immediate="true">
</xp:eventHandler>
</xp:comboBox></xp:td>
<xp:td><xp:comboBox id="comboBox3" value="#{sessionScope.subsubitem}">
<xp:selectItem itemLabel="Please select">
</xp:selectItem>
<xp:selectItems id="selectItems4">
<xp:this.value><![CDATA[#{javascript:var combo1 = getComponent("comboBox2").getSubmittedValue();
@Unique(@DbLookup("product/Bestelbon.nsf","subsubitem2",combo1,2));
}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox></xp:td>
<xp:td><xp:comboBox id="comboBox4" value="#{sessionScope.optie}" defaultValue="Gratis optie">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn("product/Bestelbon.nsf","mogelijkheid",1));}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox></xp:td>
<xp:td><xp:comboBox id="comboBox5" value="#{sessionScope.combinatie}">
<xp:selectItem itemLabel="Please select">
</xp:selectItem>
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn("product/Bestelbon.nsf","subsubitem",1));}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox></xp:td>
</xp:tr>
<xp:tr>
<xp:td></xp:td>
<xp:td></xp:td>
<xp:td></xp:td>
<xp:td></xp:td>
<xp:td></xp:td>
</xp:tr>
</xp:table>
<xp:br></xp:br>
<xp:button id="button1" value="Save">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:var combo1 = getComponent("comboBox1")
var value1= combo1.getSubmittedValue();
if (null == value1){
value1 = combo1.getValue();
}
var combo2 = getComponent("comboBox2")
var value2= combo2.getSubmittedValue();
if (null == value2){
value2 = combo1.getValue();
}
var combo3 = getComponent("comboBox3")
var value3= combo3.getSubmittedValue();
if (null == value3){
value3 = combo3.getValue();
}
var combo4 = getComponent("comboBox4")
var value4= combo4.getSubmittedValue();
if (null == value4){
value4 = combo4.getValue();
}
var combo5 = getComponent("comboBox5")
var value5= combo5.getSubmittedValue();
if (null == value5){
value5 = combo5.getValue();
}
document1.replaceItemValue("bbitem",value1);
document1.replaceItemValue("bbpsubitem",value2);
document1.replaceItemValue("bbsubsubitem",value3);
document1.replaceItemValue("bbmogelijkheid",value4);
document1.replaceItemValue("bbopmerking",value5);
document1.replaceItemValue("bbland","VF");
document1.replaceItemValue("bbproduct","NAVIX");
document1.save();
}]]></xp:this.action>
</xp:eventHandler></xp:button></xp:view>