如何将计算字段计算和数据绑定到字段?

时间:2012-06-19 16:01:47

标签: xpages xpages-ssjs

我知道如何将计算字段绑定到文档字段。我知道如何使用javascript来计算计算字段。但是我该怎么做呢?

在计算字段中说我的javascript是:

 @Name("[ABBREVIATE]" ,@UserName());

如何将其绑定到document1.ReqName字段?

5 个答案:

答案 0 :(得分:2)

我使用两个字段:

  1. 一个隐藏的输入字段,用于计算所需的值(使用xp:inputHidden控件)。我使用“默认值”模拟Computed组成时 - 和转换器模拟Computed(inspired by Tommy Valand)。
  2. 可见计算字段或可见输入字段设置为只读,执行相同的计算。也许这可以更改为使用getComponent(“”)显示隐藏输入字段的值.getValue()?

答案 1 :(得分:1)

也许我会错过Point,但为什么不简单地执行以下操作?

<xp:inputText id="inputText1" value="#{document1.Reader}">
    <xp:this.defaultValue>
        <![CDATA[#{javascript:@Name("[ABBREVIATE]",@UserName());}]]>
    </xp:this.defaultValue>
</xp:inputText>

这是每个EL绑定到DocumentField的Textfield。如果该字段为空,则按默认值计算。

大! - 我错过了这一点。但你可以尝试这个:

<xp:text escape="true" id="computedField3">
    <xp:this.value>
        <![CDATA[#{javascript: 
                    if(@IsNewDoc()){
                          document1.replaceItemValue("Reader",@Name("[ABBREVIATE]",@UserName()));
                    }
                    return document1.getItemValue("Reader");}]]>
    </xp:this.value>
</xp:text>

答案 2 :(得分:0)

对于计算字段的值,使用高级数据绑定并选择表达式语言(EL)。 要使用的表达式只是“document1.ReqName”(没有引号)。

答案 3 :(得分:0)

在这种情况下,我不会约束。我将绑定所有其他控件,在这种情况下,在保存操作之前,使用脚本直接将其添加到文档字段中。

所以类似:(原谅代码不在我的工作中)

<eventhandler>
   <actionGroup>
      <script><![CDATA[#{javascript:
         doc.replaceItemValue("ReqName", @Name("[ABBREVIATE]" ,@UserName()));
      }]]><script>

      <saveDocument></saveDocument>
   </actionGroup>
</eventhandler>

答案 4 :(得分:0)

<xp:text escape="true" id="computedFieldTest1">
[CDATA[#{javascript:
  var userName = "Username: "+("Reader",@Name("[ABBREVIATE]",@UserName()));
  currentDocument.replaceItemValue("computedFieldTest1",userName);
  return userName;
  }]]></xp:this.value>
</xp:text>