ice:selectOneMenu 和 ice:selectManyCheckbox 前者是个下拉菜单,后者是复选框。
想让他们的值改变就做一次提交操作。
对于下拉菜单来说,只要添加valueChangeListener事件。
如:
<ice:selectOneMenu id="languagesSelectors" partialSubmit="true" style="left: 22px; top: 22px; position: absolute" valueChangeListener="#{Logon.changeLocale}">
<f:selectItem itemLabel="简体中文" itemValue="zh_CN" />
<f:selectItem itemLabel="English" itemValue="en_US" />
</ice:selectOneMenu>
后台对应的java代码也很简单,只要写个changeLocale方法
partialSubmit="true" 是具有ajax 部分提交的特性。
对于复选框就复杂点罗。
<ice:selectManyCheckbox value="#{LD101.addressListSelectCheckbox}" valueChangeListener="#{LD101.addressListPowerValueChange}" οnchange="this.form.submit();" >
<f:selectItems value="#{LD101.addressListSelectCheckboxItem}" /> </ice:selectManyCheckbox>
其对应的后台java代码如下:
public void addressListPowerValueChange(ValueChangeEvent event) {
HtmlSelectManyCheckbox box = (HtmlSelectManyCheckbox) event.getSource();
List powers = (List) event.getNewValue();
if (powers.contains(String.valueOf(PowerID.watchDepartmentContacts.getIntValue())))
{
if (!addressListSelectCheckbox.contains(String.valueOf(PowerID.watchDepartmentContacts.getIntValue())))
{
addressListSelectCheckbox.add(String.valueOf(PowerID.watchDepartmentContacts.getIntValue()));
}
} else
{
addressListSelectCheckbox.remove(String.valueOf(PowerID.watchDepartmentContacts.getIntValue()));
}
if (powers.contains(String.valueOf(PowerID.watchProjectContacts.getIntValue())))
{
if (!addressListSelectCheckbox.contains(String.valueOf(PowerID.watchProjectContacts.getIntValue())))
{
addressListSelectCheckbox.add(String.valueOf(PowerID.watchProjectContacts.getIntValue()));
}
} else
{
addressListSelectCheckbox.remove(String.valueOf(PowerID.watchProjectContacts.getIntValue()));
}
if (powers.contains(String.valueOf(PowerID.watchLeadContacts.getIntValue())))
{
if (!addressListSelectCheckbox.contains(String.valueOf(PowerID.watchLeadContacts.getIntValue())))
{
addressListSelectCheckbox.add(String.valueOf(PowerID.watchLeadContacts.getIntValue()));
}
} else
{
addressListSelectCheckbox.remove(String.valueOf(PowerID.watchLeadContacts.getIntValue()));
}
if (powers.contains(String.valueOf(PowerID.watchAllContacts.getIntValue())))
{
if (!addressListSelectCheckbox.contains(String.valueOf(PowerID.watchAllContacts.getIntValue())))
{
addressListSelectCheckbox.add(String.valueOf(PowerID.watchAllContacts.getIntValue()));
}
if (!addressListSelectCheckbox.contains(String.valueOf(PowerID.watchDepartmentContacts.getIntValue())))
{
addressListSelectCheckbox.add(String.valueOf(PowerID.watchDepartmentContacts.getIntValue()));
}
if (!addressListSelectCheckbox.contains(String.valueOf(PowerID.watchProjectContacts.getIntValue())))
{
addressListSelectCheckbox.add(String.valueOf(PowerID.watchProjectContacts.getIntValue()));
}
if (!addressListSelectCheckbox.contains(String.valueOf(PowerID.watchLeadContacts.getIntValue())))
{
addressListSelectCheckbox.add(String.valueOf(PowerID.watchLeadContacts.getIntValue()));
}
} else
{
addressListSelectCheckbox.remove(String.valueOf(PowerID.watchAllContacts.getIntValue()));
}
box.setValue(addressListSelectCheckbox);
box.saveState(FacesContext.getCurrentInstance());
}
这是对icefaces 二个tag的用法的一个总结。