Xpage自定义控件不在编辑模式下显示

时间:2013-05-15 17:32:32

标签: xpages

我有一个带有几个自定义控件的xPage。一个CC嵌套在另一个中。当我将xPage置于编辑模式时,最里面的CC不会切换到编辑模式,但它包含CC。我在这里错过了什么?编辑按钮只是一个简单的“更改文档模式”操作。

xPage代码

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xc="http://www.ibm.com/xsp/custom">
    <xp:this.data>
        <xp:dominoDocument var="document1" formName="Test"></xp:dominoDocument>
    </xp:this.data>
    <xp:button value="Edit" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
        <xp:this.action>
            <xp:changeDocumentMode mode="edit" var="document1"></xp:changeDocumentMode>
        </xp:this.action></xp:eventHandler></xp:button>
    <xp:button value="Submit" id="button2">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="complete" immediate="false" save="true">
        </xp:eventHandler>
    </xp:button>
    <xc:Outer></xc:Outer>
</xp:view>

外部自定义控件

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xc="http://www.ibm.com/xsp/custom">
    <xp:this.data>
        <xp:dominoDocument var="document1" formName="Test"></xp:dominoDocument>
    </xp:this.data>
    <xp:table style="border-color:rgb(0,64,128);border-style:solid;border-width:medium">
        <xp:tr>
            <xp:td>
                <xp:label id="label1" value="Outer CC"></xp:label>
            </xp:td>
            <xp:td>
                <xp:button value="Edit" id="button1">
                    <xp:eventHandler event="onclick" submit="true"
                        refreshMode="complete">
                        <xp:this.action>
                            <xp:changeDocumentMode mode="edit"></xp:changeDocumentMode>
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
                <xp:button value="Submit" id="button2"><xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" save="true"></xp:eventHandler></xp:button></xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>
                <xp:label value="Outer Field" id="label2"></xp:label>
            </xp:td>
            <xp:td>
                <xp:inputText id="inputText1"
                    value="#{document1.FieldOuter}">
                </xp:inputText>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td></xp:td>
            <xp:td></xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td></xp:td>
            <xp:td>
                <xc:Inner></xc:Inner></xp:td>
        </xp:tr>
    </xp:table>
</xp:view>

内部自定义控制

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:this.data>
        <xp:dominoDocument var="document1" formName="Test"></xp:dominoDocument>
    </xp:this.data>
    <xp:table style="border-color:rgb(255,128,0);border-style:solid;border-width:medium">
        <xp:tr>
            <xp:td>
                <xp:label value="Inner CC" id="label1"></xp:label>
            </xp:td>
            <xp:td>
                <xp:button value="Edit" id="button1"><xp:eventHandler event="onclick" submit="true" refreshMode="complete">
    <xp:this.action>
        <xp:changeDocumentMode mode="edit" var="document1"></xp:changeDocumentMode>
    </xp:this.action></xp:eventHandler></xp:button>
                <xp:button value="Submit" id="button2"><xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" save="true"></xp:eventHandler></xp:button></xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>
                <xp:label value="Field Inner" id="label2"></xp:label>
            </xp:td>
            <xp:td>
                <xp:inputText id="inputText1" value="#{document1.FieldInner}"></xp:inputText>
            </xp:td>
        </xp:tr>
    </xp:table>
</xp:view>

1 个答案:

答案 0 :(得分:1)

每个自定义控件和您的xpage都有一个数据源,但它们具有相同的名称,并且绑定到同一文档,因为它们不会忽略请求参数。 “更改文档模式”按钮正在查找指定了var的页面上的第一个数据源,并将其更改为只读,因此仅更新绑定到该数据源的字段。我会确保你只有一个具有相同名称的数据源并以这种方式工作。