Я читал/пытался примерять часы, и я не могу заставить его работать. Я использую Primefaces 4.0p: selectBooleanButton не отображает предварительно выбранное значение
Я просто нужен способ, чтобы выбрать/снять и назначить эти значения на карте
XHTML выглядит следующим образом.
<p:selectBooleanButton value="#{presupuestoBean.itemsCambiar[itemPresupuesto.id]}"
onLabel="Yes" offLabel="No" onIcon="ui-icon-check" offIcon="ui-icon-close">
<p:ajax listener="#{presupuestoBean.updateItemPresupuestoAsignado(itemPresupuesto.id,0)}"/>
</p:selectBooleanButton>
Init Метод (сброс к Ложные только в том случае, а затем присвоить истинные значения)
for (ItemPresupuesto itemsPresupuestoDefault : itemsPresupuestoDefaults) {
itemsCambiar.put(itemsPresupuestoDefault.getId(),Boolean.FALSE);
}
Присвоить Истинные значения
if (itemPresupuestoAsignado.isCambiar()) {
itemsCambiar.put(itemPresupuestoAsignado.getId(), Boolean.TRUE);
}
и
public Map<Long, Boolean> getItemsCambiar() {
return itemsCambiar;
}
Мои ожидаемое поведение - когда itemsCamb iar имеет некоторый элемент «ИСТИНА», должен отображаться onIcon. Но это не происходит, все p: selectBooleanButton отображаются как offIcon.
Я замечаю пару вещей во время отладки.
- Булево значение, назначенное в Init, назначается надлежащим образом.
- Если изменить selectBooleanButton для outputLabel, показывает «истина» (что правильно)
- Когда я изменяю selectBooleanButton, и событие срабатывает, я могу видеть, что «истинное» значение в HashMap является не java.lang.Boolean но java.lang.String (приложение)
так что, возможно, эта проблема связана с проблемой произнесения, но я ставлю Boolean.TRUE на карте, так что ... любые идеи?
@BalusC Я не следую за вами, возможно, из-за имени свойства. Свойством map является «itemsCambiar», и это hashmap. ItemPresupuesto не имеет логического свойства 'cambiar' –
psabbate
@BalusC, я исправил проблему. Однако я не очень доволен решением, и я замечаю, что вы являетесь экспертом в JSF, не могли бы вы проверить мою собственную ответную ссылку. Благодаря! – psabbate