У меня есть объект сфокусированным лицом в моем компоненте. Некоторые атрибуты этого сфокусированного человека связаны с элементами элементов в представлении.Предотвращение «Целевой недоступности», когда объект равен нулю
<p:selectOneMenu id="eyeColorSelection"
value="#{bean.focusedPerson.eyeColor}" disabled="#{bean.noPersonFocused}">
<f:selectItems
value="#{bean.eyeColorsToSelect}"
var="eyeColor" itemLabel="#{eyeColor.i18nLabel}"
itemValue="#{eyeColor}" />
<f:ajax
listener="#{bean.eyeColorSelectionChanged}" />
</p:selectOneMenu>
Как и ожидалось, я получил следующее исключение, если никто не сфокусирован (focusPerson = null).
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, 'focusedPerson' returned null
Но как я могу справиться с этим? Моя первая идея состояла в том, чтобы не отображать selectOneMenu, если никто не фокусируется, но это не то, что я хочу. SelectOneMenu всегда должен быть видимым.
Bean Код:
private Person focusedPerson
public Person getFocusedPerson() {
return this.focusedPerson;
}
public EyeColor[] getEyeColorsToSelect() {
return EyeColor.values();
}
public boolean isNoPersonFocused() {
return this.focusedPerson == null;
}
Предоставьте Bean код. – KSHiTiJ
Вы имеете в виду, что вы действительно хотите отключить сам '', когда нет '# {bean.focusedPerson}'? Почему атрибут 'disabled', а затем' 'вместо' '? –
BalusC
@BalusC Избыточный атрибут должен быть в selectOneMenu. Ошибка копирования/вставки –