即使声明并初始化了变量,xpagegetComponent也总是返回null
xpage getComponent always returns null even when variable is declared and initialized
我在这里看到了一些文章,试图绑定计算字段,但这是我的首选解决方案;getComponent不适合我。我宁愿没有隐藏的"真实"字段。这是我的东西。一个称为VP 的计算增值税百分比字段
<xp:text escape="true" id="VP" value="#{FInvoiceDoc.VP}" style="text-align:right">
<xp:this.converter>
<xp:convertNumber pattern="0.00"></xp:convertNumber>
</xp:this.converter>
</xp:text>
这是我设置该字段值的计算之一;
XSP.getElementById("#{id:VP}").innerHTML = tmp.toFixed(2);
tmp计算正确,VP在页面上显示正确的预期值。
然后在querySaveDocument事件中,我执行以下
var VP = getComponent("VP").getValue();
FInvoiceDoc.replaceItemValue("VP",VP);
并且存储的是Null值。我甚至通过在设置VP变量后执行"打印(VP)"命令,然后检查日志,确认了VP变量为空。一定有什么东西我错过了。
在提交页面时,您不会将计算文本字段的值返回到服务器,因为它是只读的。
你正在寻找一个可以的解决方案:
- 在读取模式下显示文档的字段
- 使用CSJS在客户端为该字段设置新值
- 提交时将值保存回文档的字段
前两点已经适用于您的解决方案。
第三点可以通过添加一个输入文本字段"VPdoc"来实现,该字段绑定到文档的字段"VP"并用style="display:none"
隐藏。
<xp:inputText
id="VPdoc"
value="#{FInvoiceDoc.VP}"
style="display:none">
<xp:this.converter>
<xp:convertNumber pattern="0.00"></xp:convertNumber>
</xp:this.converter>
</xp:inputText>
在提交时,使用提交按钮中的以下CSJS代码将当前值(innerHTML)从计算文本字段"VP"复制到输入文本字段"VPdoc":
<xp:this.script><![CDATA[
XSP.getElementById("#{id:VPdoc}").value =
XSP.getElementById("#{id:VP}").innerHTML
]]></xp:this.script>
这样,在客户端设置为字段"VP"的值就会保存到文档中。
您不赋值,而是用一些html代码替换html表示。这样,您只需打断元素并将其"转换"为一个愚蠢的div(对不起,不知道如何更好地解释)。。。
永远不要乱处理前端:元素绑定到文档中的某个项。修改该值,表示该值的元素将表示更改。
并且:您不需要querysavedocument中的那几行代码来保存回值。。。这将自动完成,这就是绑定(元素的值属性)的作用。。。
也许,您没有操作innerHTML,而是使用
getComponent("VP").setValue(tmp.toFixed(2));
这样行吗?我认为,你应该设置组件的值。。。。。
相关文章:
- 没有找到相关文章