1

いくつかのカスタム コントロールを含む xPage があります。1 つの CC が他の 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>
4

1 に答える 1

1

各カスタム コントロールと xpage にはすべてデータソースがありますが、それらは同じ名前を持ち、要求パラメーターを無視していないため、同じドキュメントにバインドされています。[ドキュメント モードの変更] ボタンは、var が指定されたページの最初のデータ ソースを探し、それを読み取り専用に変更して、そのデータ ソースにバインドされているフィールドのみを更新します。同じ名前のデータソースが 1 つしかないことを確認し、そのように作業します。

于 2013-05-17T01:32:36.810 に答える