2012-08-23 40 views
0

這裏是片斷XPAGE控制示出了只讀模式,即使它是假

<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項......我正在使用多值字段...

那麼爲什麼它沒有顯示爲可編輯的字段,如果我選擇第一個選項。 我會非常感謝

+0

您可以添加重複控件的代碼片段也。 –

+2

只有EL可以做輸入綁定,SSJS不能。你是否重複使用重複的項目? –

+0

剛剛添加更多片段..是的,它重複 – Deam

回答

2

就像託比在評論中提到的那樣,當你使用SSJS作爲它們的值時,輸入域永遠不可編輯。你必須使用表達式語言。

當您使用表達式語言並且該項目爲空或僅具有一個值時,您無法使用該索引解決該問題。

爲了避免上述錯誤,並有一個可編輯字段,您可以在您的重複中放置兩個inputTextareas,其中一個綁定到「document1.AgendaText [agendaIndex]」,另一個綁定到「document1.AgendaText」。然後,您可以使用呈現的屬性來使用相應的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> 
相關問題