1

我正在尝试连接表达式语言中的字符串以访问对象的属性并且未能这样做。

在 Lotus Notes 的 XPage 中,我想以编程方式选择要将当前 XPage 上的控件绑定到哪个字段。

我想达到的结果如下。

#{poDoc[advertisingDateStart];}

我有一个名为 fieldName 的变量,它将提供“advertisingDate”,并且只想将“开始”附加到该字段并将“结束”附加到结束日期字段。我尝试了几种不起作用的变体,例如:

#{poDoc[fieldName{'Start'}];}

请注意,如果我传入“advertisingDateStart”并使用它会起作用

#{poDoc[fieldName];}

目标是能够在基于配置文档动态绑定的同时放置开始日期字段和结束日期字段。也就是说,使用配置文档和重复向我的 XPage 添加字段,而不是更改设计。这是我尝试创建结束日期字段的方法之一:

<xp:inputText id="inputText5"
    style="padding-top:2px;text-align:left">
    <xp:this.rendered><![CDATA[#{javascript:rowData.getColumnValue("FieldType") == "Date Range"; }]]></xp:this.rendered>
    <xp:dateTimeHelper id="dateTimeHelper3"></xp:dateTimeHelper>
    <xp:this.converter>
        <xp:convertDateTime type="date"></xp:convertDateTime>
    </xp:this.converter>
    <xp:this.value><![CDATA[#{javascript:poDoc[fieldName+"End"];}]]></xp:this.value>
</xp:inputText>

我就是想不通。

4

1 回答 1

2

不幸的是,您不能使用 'javascript:' 表示法进行绑定。在 SSJS 中,无法指向您希望绑定到组件属性的“对象属性”(getter 和 setter)。

只有表达式语言可以用点表示法做到这一点。

如果您确实需要绑定到动态字段,则必须按照 Per Henrik Lausten 的建议在使用它之前计算字段名(xp:dataContext 是要走的路)。由于您需要一个条目中的两个日期字段,因此您应该为新值使用不同的变量,使用 Javascript 计算值

<xp:this.dataContexts> 
    <xp:dataContext var="fieldName"> 
       <xp:this.value>
        <![CDATA[#{javascript:rowData.getColumnValue ("FieldName");}]]>
       </xp:this.value>
     </xp:dataContext>
    <xp:dataContext var="fieldNameDateStart">
     <xp:this.value>
         <![CDATA[#{javascript:return rowData.getColumnValue ("FieldName") + "Start";}]]>
     </xp:this.value>
    </xp:dataContext> <xp:dataContext var="fieldNameDateEnd">
     <xp:this.value>
        <![CDATA[#{javascript:return rowData.getColumnValue ("FieldName") + "End";}]]>
     </xp:this.value>
    </xp:dataContext>
</xp:this.dataContexts> 

fieldName 将用于单个字段条目,而其他字段仅用于开始日期和结束日期。

于 2013-05-09T07:20:14.040 回答