2015-06-22 5 views
2

Итак, у меня есть selectOneMenu на моей странице профиля пользователя. Значение, на которое оно нацелено, является полем в моей таблице пользовательских профилей. Это поле является внешним ключом другой таблицы. Первоначально это значение равно null, поскольку пользователь еще не установил свою информацию.null bean in selectOneMenu

выберите одно меню выглядит следующим образом:

<p:selectOneMenu value="#{userProfileEdit.uinfo.datBean}" > <!-- This Value is null initially --> 
    <f:selectItem itemLabel="Select One" itemValue="#{null}" /> 
    <f:selectItems value="#{datBeanConverter.beansList}" var="bean" itemLabel="#{bean.title}" itemValue="#{bean}"/> 
</p:selectOneMenu> 

Значение изначально пустой, и я получаю эту ошибку:

value="#{userProfileEdit.uinfo.datBean}": Target Unreachable, 'null' returned null 

Как я могу обойти это, если я могу?

Edit: Мой uinfo свойство боб инициализируется в userProfileEdit как так

@ManagedBean 
@RequestScoped 
public class UserProfileEdit implements Serializable { 
    private Userinfo uinfo; 
    @EJB 
    private UserProfileService us; 
    //... 

    @PostConstruct 
    public void init() { 
     setUser(); 
     this.uinfo = us.getUserInfo(username); 
    } 
    //... 
} 
+1

какая версия JSF? –

+0

version 2.2 majorra – Ced

ответ

2

определить новую datBean переменную и поместить его в значение атрибута, как этот

<p:selectOneMenu value="#{userProfileEdit.datBean}" > <!-- This Value is null initially --> 
     <f:selectItem itemLabel="Select One" itemValue="#{null}" /> 
     <f:selectItems value="#{datBeanConverter.beansList}" var="bean" itemLabel="#{bean.title}" itemValue="#{bean}"/> 
    </p:selectOneMenu> 

Затем после того, как отправить форму, вы можете создать uinfo объекта и использовать datBean объект.

+0

Я не уверен, что вы имели в виду со своим вторым ответом (мой боб был уже создан). Однако первый работает, хотя мне пришлось что-то изменить, поэтому я отредактирую ваш комментарий, надеюсь, вы не против. Я все еще недоумеваю, почему это работает, а не мой оригинальный код. – Ced

+0

Я пошел вперед и удалил второе решение (извините, если это было неправильно с моей стороны). Я думал, вы неправильно поняли мою первоначальную проблему. Я мог ошибаться, так что извините, если мое устранение вашего ответа было неправильным. – Ced

+0

Проблема uinfo имеет значение null, поэтому решение заключается в инициализации этого объекта или замене, метод @PostConstruct вызывается после конструктора, поэтому здесь вы инициализируетесь. или использовать первое решение –

1

Вы можете инициализировать его в методе postconstruct боба.

@PostConstruct 
public void init() { 
... 
    UserInfo uinfo= new UserInfo(); 
    //you will need to initialize the property datBean of UserInfo in the Constructor. 
... 
} 

Дополнительная информация:

@PostConstruct

Target Unreachable

Надеется, что это помогает.

+0

Примите этот вопрос, если он помог решить вашу проблему, так как это было бы оценено другими пользователями, у которых есть та же проблема. –

+0

Да, я не буду 2 часа. Има проверяет это сейчас. – Ced

+0

отлично, без стеснения спрашивайте какие-либо разъяснения. –

Смежные вопросы