2010-09-06 3 views
0

У меня есть небольшой вопрос относительно представить форм в JSF 2:JSF2 DataBinding Проблема

В моем веб-приложение я получил функцию, которая обновляет объекты в моей дб. Эта функция получает относительные данные из управляемого компонента.

Итак, моя проблема заключается в том, что изменения в моем представлении не передаются в managedBean. Для этого вам будет показан пример:

public String updateProject() { 
    projectService.updateProject(projectData.getProjectDTO()); 
    return ("overview.xhtml"); 
} 

prjectData - мой ManagedBean. Это не работает! Обновлений не было.

public String deleteProject() { 
    projectData.getProjectDTO().setDeleted(true); 
    projectService.updateProject(projectData.getProjectDTO()); 
    return ("overview.xhtml"); 
} 

Здесь, когда я меняю значение по коду, он работает! Поэтому я думаю, что мои ценности из представления не переданы моему управляемому банку.

Где могла быть ошибка? Может быть, действие, которое я должен вызвать, чтобы данные передавали мой взгляд на managedBean?


Ответ на комментарий Габора:

Моя страница выглядит как:

<h:form> 
<h:commandLink action="#{controller.updateProject}" value="Edit" /> 
<h:outputLabel for="title" value="Titel" /> 
<h:inputText id="title" value="#{projectData.projectDTO.title}" /> 
</h:form> 

Если изменить название здесь и нажмите обновления ничего не происходит ;-)


Мой контроллер выглядит так:

По неизвестной причине мой режим отладки в eclipse больше не работает, он все время игнорирует мои точки останова. Я собираюсь исправить это, а затем проверю экземпляры. Sry -.-

+0

Как выглядит ваша страница JSF? Что следует назвать этими функциями? – egbokul

+0

Можете ли вы открыть свой код для свойства projectData и свойства projectDTO, как вы его определили. –

+0

Вы попробовали отладить его, чтобы узнать, передаются ли данные управляемому компоненту? И проверить, является ли это одним и тем же экземпляром? (См. Ответ BalusC). – amorfis

ответ

0

Либо projectData, либо projectDTO не является подходящим экземпляром, как вы ожидаете. Это совершенно другой пример. Разве вы не жадно воссоздаете/переопределяете бобы? У вас нет нескольких бобов в области? Разве это не должно быть #{controller.projectData.projectDTO.title}? Должен ли объект projectData в controller быть управляемым имуществом?

0

Является ли ваш projectData bean также RequestScoped? Попробуйте перейти на ViewScoped. RequestScoped beans воссозданы для каждого запроса, также ajax-запрос. И какова область projectService?

+0

projectData is SessionScoped и projectService не управляется, поэтому его жизненный цикл обрабатывается контроллером – Sven

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