Xpages:无法计算属性";“默认值”;在自定义控件中

Xpages:无法计算属性";“默认值”;在自定义控件中,xpages,Xpages,我有一个自定义控件,其中包含一个组合框。CC的一个属性是default值,我希望开发人员能够在Xpage中选择它 静态值传递到CC fine,但是如果我尝试默认值,它将失败。我想将默认属性默认为当前用户,但它不能 这是Xpage上的自定义控件。我可以静态地返回一个名称,它可以工作,但是如果我计算名称,它就不能工作 <xc:cc_commonfieldselect2fromcache datasource="#{javascript:return Ticket}" cacheit

我有一个自定义控件,其中包含一个组合框。CC的一个属性是default值,我希望开发人员能够在Xpage中选择它

静态值传递到CC fine,但是如果我尝试默认值,它将失败。我想将默认属性默认为当前用户,但它不能

这是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>

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


在代码中,您在“加载时”计算默认值:

defaultValue=“${javascript:compositeData.defaultValue}”

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

defaultValue=“#{javascript:compositeData.defaultValue}”


这应该可以做到这一点,在您的代码中,您可以在“加载时”计算默认值:

defaultValue=“${javascript:compositeData.defaultValue}”

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

defaultValue=“#{javascript:compositeData.defaultValue}”


这应该可以做到

在将默认值存储到cc的合成数据之前,您的代码使用了默认值(在您的cc中)

${} => computed a single time on pageload (and before all dynamically computed) 
#{} => dynamically computed
你有两个选择

  • 将cc defaultValue设置为动态计算(#)
  • 同时在pageload上提供默认值($)

  • 在将默认值存储到cc的compositeData中之前,代码使用了默认值(在cc中)

    ${} => computed a single time on pageload (and before all dynamically computed) 
    #{} => dynamically computed
    
    你有两个选择

  • 将cc defaultValue设置为动态计算(#)
  • 同时在pageload上提供默认值($)

  • 斯蒂芬,这很有道理,但我试过了,但没用。如果我选择“使用静态值”并在类似“Bryan S”的内容中输出,那么它就工作了。但是,如果我计算任何东西,那么它就不起作用。即使我把return“Bryan”放在ssjs框中。然后什么也没有出现。我试着做一个cc,它只是一个组合框,没有选择2,但我仍然无法计算属性。我犯了一个不同的错误。当我修复了如何用Java保存数据时,您的更改运行得很好。谢谢Stephan,这是有道理的,但我试过了,但没用。如果我选择“使用静态值”并在类似“Bryan S”的内容中输出,那么它就工作了。但是,如果我计算任何东西,那么它就不起作用。即使我把return“Bryan”放在ssjs框中。然后什么也没有出现。我试着做一个cc,它只是一个组合框,没有选择2,但我仍然无法计算属性。我犯了一个不同的错误。当我修复了如何用Java保存数据时,您的更改运行得很好。谢谢我不明白你的第一句话?你能不能再详细一点,我说了。只需像斯特维塞尔说的那样更改代码。我只是想添加你的第二个选项来解决这个问题。我犯了一个不同的错误。当我修复了如何用Java保存数据时,您的更改运行得很好。现在切换到#(运行时)修复了我的问题。谢谢你的帮助。我不明白你的第一句话?你能不能再详细一点,我说了。只需像斯特维塞尔说的那样更改代码。我只是想添加你的第二个选项来解决这个问题。我犯了一个不同的错误。当我修复了如何用Java保存数据时,您的更改运行得很好。现在切换到#(运行时)修复了我的问题。谢谢你的帮助。