为什么DominoDocumentData.setConcurrencyMode对Domino文档数据源没有影响?

时间:2015-01-19 13:16:00

标签: xpages

我曾经以某种方式保存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源中设置的值,并忽略代码中设置的值。谁知道原因?感谢。

1 个答案:

答案 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"

希望澄清它。