Xpages:无法在自定义控件中计算属性“defaultValue”

时间:2017-03-22 20:36:34

标签: xpages

我有一个包含comboBox的自定义控件。 CC的一个属性是默认值,我希望开发人员能够在Xpage中选择。

静态值传入CC正常,但如果我尝试默认值,则失败。我想将默认属性默认为当前用户,但它不能。

这是Xpage上的自定义控件。我可以静态返回一个名称并且它可以工作,但是如果我计算它的名称它就不起作用。

<xc:cc_commonfieldselect2fromcache 
  datasource="#{javascript:return Ticket}" 
  cacheitem="employees" 
  fieldname="tckReqs" 
  fieldlabel="Requester">
<xc:this.defaultvalue>
 <![CDATA[#{javascript:var usrNme:String = ("[CN]",session.getEffectiveUserName());
       return usrNme;
       //return "Bryan S Schmiedeler";}]]>
</xc:this.defaultvalue>
</xc:cc_commonfieldselect2fromcache>

以下是自定义控件的一部分:我正在尝试传入上面设置的compositeData.defaultValue。如果我对其进行硬编码就可以了,否则就不行了。

        <xp:comboBox
            id="${javascript:compositeData.fieldName}"
            value="#{compositeData.dataSource[compositeData.fieldName]}"
            defaultValue="${javascript:compositeData.defaultValue}">
            <xp:selectItems
                value="${javascript:'#{CacheBean.'+compositeData.cacheItem+'}'}">
            </xp:selectItems>
        </xp:comboBox>

以下是我在自定义控件中设置属性的方法:

enter image description here

2 个答案:

答案 0 :(得分:2)

在将代码存储到cc的compositeData之前,您的代码使用了defaultValue(在cc中)。

${} => computed a single time on pageload (and before all dynamically computed) 
#{} => dynamically computed

您有2个选项

  1. 将cc defaultValue设置为动态计算(#)
  2. 也在pageload($)
  3. 上提供defaultValue

答案 1 :(得分:1)

在您的代码中,您可以计算&#34;加载时间&#34;的默认值:

defaultValue="${javascript:compositeData.defaultValue}"

虽然您需要在运行时计算它:

defaultValue="#{javascript:compositeData.defaultValue}"

应该做的伎俩