我曾经以某种方式保存XPage的当前DominoDocument:
UIViewRootEx2 view=(UIViewRootEx2) FacesContext.getCurrentInstance().getViewRoot();
DominoDocumentData ddd=(DominoDocumentData) view.getData().get(0);
DominoDocument dominoDoc=(DominoDocument) ddd.getDataObject();
//ddd.setConcurrencyMode("force");
dominoDoc.save();
要使用数据源的concurrencyMode属性来避免冲突,我添加以下行。
ddd.setConcurrencyMode("force");
我希望这与在XPage中设置属性的行为相同:
<xp:dominoDocument var="document1" formName="Test" computeWithForm="onsave" concurrencyMode="force"></xp:dominoDocument>
但它失败了。它始终使用XPage源中设置的值,并忽略代码中设置的值。谁知道原因?感谢。
答案 0 :(得分:0)
我会说:按设计工作。在其中一个jsf phases期间,读取设计并覆盖值。
在JSF和XPage中你不会因为#34; Controller Code&#34; (按钮中的内容)使用&#34;查看渲染&#34; (您的XPages源代码)。您宁愿将属性绑定到模型(范围变量是一个很好的候选者)并让运行时运行它。
所以你的代码将是
<xp:dominoDocument var="document1"
formName="Test"
computeWithForm="onsave"
concurrencyMode="#{viewScope.myConcurrency}">
</xp:dominoDocument>
和
viewScope.myConcurrency = "force"
希望澄清它。