Java не весь объект возвращается? - PullRequest
0 голосов
/ 20 декабря 2011

Я занимаюсь разработкой JSF, но проблема в Java, я верю. Итак, у меня есть таблица с запросами, когда я нажимаю идентификатор запроса, который отправляется на страницу reviewRequest с:

 <h:inputHidden id="id" value="#{requestClass.requestID}" />

Теперь это работает, потому что я загружаю детали запроса на следующей странице (беря ID и получая объект из базы данных). теперь, когда я изменяю объект из reviewRequest и принимаю, он говорит, что он успешно сохранен. Затем я снова просматриваю ту же страницу из таблицы, щелкаю идентификатор запроса, и там идет взрыв. Когда он загружает объект на этот раз, он передает идентификатор для извлечения метода, затем он возвращает только изменение, но не всю информацию об объекте, такую ​​как имя, контакты и т. Д., Только то, что пользователь типа x представил модификацию y. Метод извлечения из БД работает наверняка, потому что во всем приложении он работает правильно. Любая идея? часть кода ниже для иллюстрации:

public void callIsValidUser(){
     boolean holder = isValidUser();
     if(holder == true){
         rsvIns = loadDetails();
     }else{
          try{

     FacesContext.getCurrentInstance().getExternalContext().dispatch("pending.xhtml");
         }catch(IOException ioe){
             System.err.print(ioe);
         }
     }
 }

вышеописанный метод работает в первый раз, но не после модификации. в isValid ():

public boolean isValidUser(){

    boolean valid = false;
    try{
       rsvLocal = oracleRsv.retrieveReservation(id);
       String reqDivHead = rsvLocal.rdhUser.getUserID();
       //rsvLocal.rdhUser.getUserResponse();
       String supervisor = rsvLocal.sUser.getUserID();           
       String divHead = rsvLocal.dhUser.getUserID();          
       String currentUser = System.getProperty("user.name");  
         .....

теперь, когда я проверяю rsvLocal в режиме отладки netbeans, я вижу, что rdhUser.response содержит введенную мною модификацию, но все остальное равно нулю. Как это может случиться? Как некоторые данные могут быть получены из объекта? Спасибо,

1 Ответ

0 голосов
/ 20 декабря 2011

Скорее всего, вы не загрузили данные в самом начале.Затем JSF создал пустой бин и установил значения из формы.Теперь все, что не упомянуто в форме (и, конечно, каждое пустое поле формы) содержит null.Этот полуготовый боб теперь хранится в БД , перезаписывая всю строку .Если вы снова загрузите строку, то увидите, что вы называете «моими изменениями», но каково полное содержимое БД.Ваши старые данные потеряны.

Ключевой момент: JSF и DB-Layers не имеют дело с «модификациями» отдельных полей - они обрабатывают полные сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...