У меня есть вид, который отображает данные учетной записи пользователя.Соответствующее действие запрашивает код на стороне сервера (для получения объекта учетной записи пользователя) через фабрику запросов GWT.Интерфейс представления расширяет интерфейс TakesValue , поэтому мой ViewImpl реализует метод setValue (UserAccountProxy).Как и предполагалось, этот метод используется для установки ссылки на объект, который будет отображаться в данный момент.
UserAccountProxy имеет много свойств, поэтому его прокси-сервер ссылается на многие другие прокси-объекты.Так, например, мы можем иметь: UserNameProxy, UserPasswordProxy, UserRolesProxy и так далее, инкапсулированные в UserAccountProxy.Почти каждый из этих прокси может быть нулевым в некоторых случаях (у пользователя не указаны роли, у пользователя нет аватара, не указана подпись ...).Кроме того, возможно, что соответствующее действие не будет запрашивать фабрику запросов для некоторой части свойств, и тогда эти свойства также будут нулевыми.
Если какое-либо из этих свойств (прокси) не равно нулю, тоон должен отображаться в представлении с использованием соответствующего виджета.
Самый простой и уродливый способ избежать исключения NullPointerException заключается в следующем:
public void setValue(UserAccountProxy account) {
//getUserName() returns proxy which may be null
if (account.getUserName() != null) {
setUserNameWidget(account.getUserName());
}
//getUserPassword() returns proxy which may be null
if (account.getUserPassword() != null) {
setUserPasswordWidget(account.getUserPassword());
}
// (....)
}
Конечно, я бы хотел избежатьтип кодирования, но я понятия не имею, как это сделать другим способом.
Заранее благодарен за любые подсказки.