组合框“showReadonlyAsDisabled”属性不起作用

时间:2016-04-13 19:07:07

标签: xpages

我的XPage上有一个组合框,showReadonlyAsDisabled标记为true:

std::less::operator()

但是,组合框仍显示为只读(文本)而不是禁用的控件。这是一个错误吗? showReadonlyAsDisabled属性似乎适用于其他控件(输入,无线电等)。我正在使用Designer 9.0.1FP4,而Domino服务器则在9.0.1FP5上。

编辑(显示带数据绑定的组合框):

自定义控件中的Comobo框

<xp:comboBox
    id="ComboTest"
    defaultValue="One"
    showReadonlyAsDisabled="true"
    readonly="true">
    <xp:selectItem
        itemLabel="One"
        itemValue="One">
    </xp:selectItem>
</xp:comboBox>

父XPage上的数据绑定

<xp:comboBox
    id="Address"
    value="#{Location.AddressType}"
    defaultValue="Street Address"
    showReadonlyAsDisabled="true"
    readonly="true">
    <xp:selectItems>
        <xp:this.value><![CDATA[#{javascript:keywords.getSelectItem("Address Type", true);}]]></xp:this.value>
    </xp:selectItems>
</xp:comboBox>

2 个答案:

答案 0 :(得分:1)

对于在阅读模式下呈现为html表格的各种选择控件似乎是一个问题(在我看来,这比仅仅这个更令人讨厌&#34;在阅读模式下显示禁用&#34;错误因为它使样式不必要地变得复杂)。但是,只有在控件绑定到文档数据源时才会发生这种情况。

所以你可以尝试在你的页面上创建第二个组合框并将其绑定到viewScope变量,然后确保在页面加载时从Notes字段复制正确的值,然后确保只有一个tyru事件控制在读取/编辑模式下可见:

对于名为Location的数据源和Notes字段AddressType,这将位于beforePageLoad中:

if(!doc1.isNewNote()){
    viewScope.comboField=Location.getItemValueString("AddressType");
}

这将是原始/可编辑的comboBox控件的标记:

<xp:comboBox id="comboBox1" value="#{Location.AddressType}" rendered="#{javascript:doc1.isEditable()}" defaultValue="Street Address">
    <xp:selectItems>
        <xp:this.value><![CDATA[#{javascript:keywords.getSelectItem("Address Type", true);}]]></xp:this.value>
    </xp:selectItems>
</xp:comboBox>

这将是您的附加/禁用comboBox控件的标记:

<xp:comboBox id="comboBox2" value="#{viewScope.AddressType}" disabled="true" rendered="#{javascript:!doc1.isEditable()}">
    <xp:selectItems>
        <xp:this.value><![CDATA[#{javascript:keywords.getSelectItem("Address Type", true);}]]></xp:this.value>
    </xp:selectItems>
</xp:comboBox>

答案 1 :(得分:0)

您可以将以下XML部分添加到应用程序的faces-config.xml

使用此功能,ComboBox的渲染器将设置为默认渲染器,而不是只读渲染器。然后,您的ComboBox应该按您的要求显示。

<renderer>
    <component-family>javax.faces.SelectOne</component-family>
    <renderer-type>javax.faces.Menu.ReadOnly</renderer-type>
    <renderer-class>com.ibm.xsp.renderkit.html_basic.MenuRenderer</renderer-class>
</renderer>