这是的片段
<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个项目才能显示。。。我正在使用多值字段。。。
那么,如果我选择第一个选项,为什么它不显示为可编辑字段呢。我将非常感谢
就像注释中提到的Toby一样,当您使用SSJS作为输入字段的值时,输入字段永远不可编辑。你必须使用表达语言。
如果使用表达式语言,并且项为空或只有一个值,则无法使用索引对其进行寻址。
为了避免上述错误并拥有一个可编辑字段,您可以在重复中放置两个inputText区域,一个绑定到"document1.AgentText[agendaIndex]",另一个则绑定到"document1.AgentText"。然后,您可以使用rendered属性使用相应的inputTextarea,具体取决于它是多值项还是单值项(请参阅下面的示例代码)。
样本代码:
<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>