我有一个可编辑字段的自定义控件,验证是通过java bean完成的。我想设置isValid()属性来设置bootstrap样式,如下所示:
但是,如果我将cc多次放在页面上,这不起作用,因为我正在搜索组件的ID以设置Valid属性。
我需要在CC中计算字段的ID,或者执行其他类似post describes的操作。
我相信我可以像这样计算文本字段的ID:
<xp:inputText
id="${javascript:compositeData.fieldName}"
type="text"
loaded="${!empty compositeData.placeholder}"
required="${compositeData.required}"
disableClientSideValidation="true">
<xp:this.attrs>
<xp:attr
name="placeholder"
value="${compositeData.placeholder}" />
</xp:this.attrs>
<xp:this.binding><![CDATA[#{javascript:compositeData.dataSource[compositeData.fieldName]}]]></xp:this.binding>
</xp:inputText>
但是,我需要计算组件的一些地方,例如
<xp:this.styleClass><![CDATA[#{javascript:"form-group" + (getComponent("inputText1").isValid() ? "" : " has-error" )}]]></xp:this.styleClass>
我必须更换&#34; inputText1&#34;用计算出的ID,但无法弄清楚如何做到这一点。
有更好/更简单的方法吗?
答案 0 :(得分:5)
为什么不在引用id的任何地方使用compositeData.fieldName?
<xp:this.styleClass><![CDATA[#{javascript:"form-group" + (getComponent(compositeData.fieldName).isValid() ? "" : " has-error" )}]]></xp:this.styleClass>