的類型轉換器是網頁加載過程中計算,並且在此期間,不可能與getComponent方法來訪問的部件。此外,以這種方式重新計算轉換器的類型是不可能的。事件如果你使用頁面加載/動態技巧,轉換器的類型將不會重新計算。
但是你可以在局部刷新改變轉換器的類型:
<xp:comboBox id="comboBox1">
<xp:selectItem itemLabel="One" itemValue="1"></xp:selectItem>
<xp:selectItem itemLabel="Null" itemValue="0"></xp:selectItem>
<xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="inputText1">
<xp:this.action><![CDATA[#{javascript:
var cmp:com.ibm.xsp.component.xp.XspInputText = getComponent("inputText1");
var converter:com.ibm.xsp.convert.DateTimeConverter = cmp.getConverter();
var value = getComponent("comboBox1").getValue();
if(value == 0) {
converter.setType("both");
}else{
converter.setType("date");
}
}]]>
</xp:this.action>
</xp:eventHandler>
</xp:comboBox>
在這個例子中,檢測DateField是inputText1,看起來像這樣:
<xp:inputText id="inputText1">
<xp:this.converter>
<xp:convertDateTime type="time" />
</xp:this.converter>
<xp:dateTimeHelper />
</xp:inputText>
完美,謝謝說明! –