0

これがスニペットです

<xp:repeat id="agendaRepeat" rows="30" var="agenda" indexVar="agendaIndex">

        <xp:this.value><![CDATA[#{javascript:var r = document1.getItemValue("AgendaHeading");
return (typeof r == 'string') ? [r] : r;}]]></xp:this.value>
        <xp:inputHidden id="agendaGuideReferenceHiddenRepeat" />


                <xp:inputText id="agendaGuideHeaderInput"
                    styleClass="agendaGuideHeaderInput" value="#{agenda}">

<!-- inputTextarea1 DOES NOT WORK -->               
                        <xp:inputTextarea id="inputTextarea1"
                            styleClass="agendaGuideSubtextInput"
                            value="#{javascript:document1.getItemValue('AgendaText').get(agendaIndex)}"
                            readonly="false">

                        </xp:inputTextarea>

</xp:repeat>

コントロールは常に読み取り専用で表示され、次のようにバインドすると

document1.AgendaText[index]

その後、リピートコントロールにあるため、正常に表示されます。例外が表示され続けるため、これを行うことはできません。

Error getting property '0' from bean of type java.lang.String

表示するには、フィールドに少なくとも2つのアイテムが必要なためです...複数値フィールドを使用しています...

最初のオプションを選択した場合、編集可能なフィールドとして表示されないのはなぜですか。とてもありがたいです

4

1 に答える 1

2

コメントで述べたTobyのように、SSJSを値として使用する場合、入力フィールドは編集できません。あなたは表現言語を使わなければなりません。

式言語を使用していて、アイテムが空であるか、値が1つしかない場合、インデックスでアドレス指定することはできません。

上記のエラーを回避し、編集可能なフィールドを作成するには、2つのinputTextareasを繰り返しに配置します。1つは「document1.AgendaText [agendaIndex]」にバインドされ、もう1つは「document1.AgendaText」にバインドされます。次に、renderedプロパティを使用して、複数値アイテムか単一値アイテムかに応じて、対応するinputTextareasを使用できます(以下のサンプルコードを参照)。

サンプルコード:

<xp:inputTextarea id="inputTextarea_multiValue" styleClass="agendaGuideSubtextInput" readonly="false">
    <xp:this.rendered><![CDATA[#{javascript:@Elements( document1.getItemValue('AgendaText') ) > 1;}]]></xp:this.rendered>
    <xp:this.value><![CDATA[#{document1.AgendaText[agendaIndex]}]]></xp:this.value>
</xp:inputTextarea>

<xp:inputTextarea id="inputTextarea_singleValue" value="#{document1.AgendaText}" styleClass="agendaGuideSubtextInput" readonly="false">
    <xp:this.rendered><![CDATA[#{javascript:@Elements( document1.getItemValue('AgendaText') ) <= 1;}]]></xp:this.rendered>
</xp:inputTextarea>
于 2012-08-24T07:19:50.843 に答える