【问题标题】:Xpages: Cannot compute property "defaultValue" in custom controlXpages:无法在自定义控件中计算属性“defaultValue”
【发布时间】:2017-03-24 02:54:32
【问题描述】:

我有一个包含组合框的自定义控件。 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>

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

【问题讨论】:

    标签: xpages


    【解决方案1】:

    您的代码在存储到您的 cc 的复合数据之前使用了 defaultValue(在您的 cc 中)。

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

    你有两个选择

    1. 将您的 cc 默认值设置为动态计算 (#)
    2. 在页面加载时也提供默认值 ($)

    【讨论】:

    • 我没听懂你的第一句话?你能扩展一下吗?
    • 我做到了。只需像 stwissel 所说的那样更改您的代码。我只是想添加您的第二个选项来解决问题。
    • 我犯了一个不同的错误。当我修复如何在 Java 中保存数据时,您的更改工作得很好。现在切换到 # (runtime) 解决了我的问题。谢谢你的帮助。
    【解决方案2】:

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

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

    当你需要在运行时计算它:

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

    这应该可以解决问题

    【讨论】:

    • Stephan,这很有道理,但我试过了,但没有用。如果我选择“使用静态值”并使用“Bryan S”之类的内容,那么它可以工作。但是,如果我计算任何东西,那么它就不起作用。即使我在 ssjs 框中输入了 return "Bryan"。然后什么都没有出现。我尝试制作一个只是组合框的 cc,没有 select2,但我仍然无法计算该属性。
    • 我犯了一个不同的错误。当我修复如何在 Java 中保存数据时,您的更改工作得很好。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    相关资源
    最近更新 更多