3 Replies Latest reply on Jan 16, 2007 4:21 PM by yoav200

    Error during model data update

    yoav200

      I'm struggling this problem for some time now...

      Here is my code that generates the problem, I must add that NO exception is thrown, the console is silent...

      @Stateful
      @Name("tripsManager")
      @Interceptors(SeamInterceptor.class)
      public class TripsManagerBean implements TripsManagerLocal, Serializable {
      
      
       @Logger
       private Log logger;
      
       @EJB
       TripServiceLocal tripService;
      
       @RequestParameter
       Long id;
      
       @DataModel
       List<Trip> tripList;
      
       @DataModelSelection
       @Out(required = false,scope=ScopeType.CONVERSATION)
       private Trip selectedTrip;
      
      
       public TripsManagerBean() {
       super();
       }
      
      
       @Factory("tripList")
       public void findTripsByUser() {
       logger.info("Getting trip list...");
       tripList = tripService.findTripsByUser(userName);
       }
      
       public String selectTrip() {
       logger.info("Selected trip: " + selectedTrip.getId());
       return "selectTrip";
       }
      
       public String selectTripForEdit() {
       logger.info("Selected trip: " + selectedTrip.getId());
       return null;
       }
      
       public void editTrip() {
      
       try {
       tripService.updateTripDetails(selectedTrip);
      
       logger.info("edit trip " + selectedTrip.getId() + " successfully");
       } catch (Exception e) {
       logger.error("fail to edit trip", e);
      
       }
       }
      
       public void deleteTrip() {
       try {
       tripService.deleteTrip(selectedTrip);
       tripList.remove(selectedTrip);
       logger.info("delete trip " + selectedTrip.getId() + " successfully");
       } catch (Exception e) {
       logger.error("fail to delete Trip", e);
       }
       }
      
       public void cancel() {
       // TODO Auto-generated method stub
      
       }
      
       @Remove
       @Destroy
       public void destroy() {
       }
      }
      
      @Stateless
      @Name("tripEdit")
      @Interceptors(SeamInterceptor.class)
      public class TripEditAction implements TripEditLocal,Serializable {
      
      
       public static final int ACTION_SUCCESS = 100;
      
       public static final int ACTION_FAIL = 101;
      
       @Logger
       private Log logger;
      
       @EJB
       TripServiceLocal tripService;
      
       @In(create=true, scope=ScopeType.CONVERSATION)
       Trip selectedTrip;
      
       private int responseStatus;
      
       public TripEditAction() {
       super();
       }
      
       public int getResponseStatus() {
       return responseStatus;
       }
      
       public void setResponseStatus(int responseStatus) {
       this.responseStatus = responseStatus;
       }
      
       public void editTrip() {
       setResponseStatus(ACTION_FAIL);
       try {
       tripService.updateTripDetails(selectedTrip);
       setResponseStatus(ACTION_SUCCESS);
       logger.info("edit trip " + selectedTrip.getId() + " successfully");
       } catch (Exception e) {
       logger.error("fail to edit trip", e);
       setResponseStatus(ACTION_FAIL);
       }
       }
      
       public void cancel() {
       logger.error("Clear add new trip Form");
       }
      
      }


      my web page is this:
      <t:div styleClass="content">
       <h:outputText value="<h3>Edit Trip</h3>" escape="false" />
       <t:div styleClass="inner_content_green medium" style="background-color:#FFFFFF;">
       <h:form id="editTripForm">
      
       <h:panelGrid id="editTripTable" columns="2" border="0" style="width:99%;">
       <h:panelGroup>
       <h:outputText value="Trip name<br/>" escape="false" />
       <t:inputText id="name" value="#{selectedTrip.name}" styleClass="text" required="true" />
       <t:inputHidden id="id" value="#{selectedTrip.id}" />
       <t:inputHidden id="responseStatus" value="#{tripEdit.responseStatus}" />
       <h:outputText value="<br/>" escape="false" />
       <t:message for="name" styleClass="errorMsg" forceSpan="true" >
       <h:outputText value=" " escape="false"/>
       </t:message>
       </h:panelGroup>
       <h:panelGroup>
       <h:outputText value="Date:<br/>" escape="false" />
       <h:inputText id="startDate" value="#{selectedTrip.startDate.time}" styleClass="text" required="true">
       <f:convertDateTime pattern="dd/MM/yyyy"/>
       </h:inputText>
       <h:graphicImage url="images/calendar/calendar.gif"
       alt="Click to open Calendar"
       onclick="displayCalendar(document.getElementById('editTripView:editTripForm:startDate'),'dd/mm/yyyy',this)"
       style="border:0px;vertical-align:top;"/>
       <t:message for="startDate" styleClass="errorMsg" forceSpan="true" >
       <h:outputText value=" " escape="false"/>
       </t:message>
       </h:panelGroup>
      
       <h:panelGroup>
       <h:outputText value="Country<br/>" escape="false" />
       <h:inputText id="country" value="#{selectedTrip.country}" styleClass="text" required="true"/>
       <h:outputText value="<br/>" escape="false" />
       <t:message for="country" styleClass="errorMsg" forceSpan="true" >
       <h:outputText value=" " escape="false"/>
       </t:message>
       </h:panelGroup>
       <h:panelGroup>
       <h:outputText value="City<br/>" escape="false" />
       <h:inputText id="city" value="#{selectedTrip.city}" styleClass="text" required="true"/>
       <h:outputText value="<br/>" escape="false" />
       <t:message for="city" styleClass="errorMsg" forceSpan="true" >
       <h:outputText value=" " escape="false"/>
       </t:message>
       </h:panelGroup>
      
       <a4j:commandButton value="Edit Trip"
       action="#{tripEdit.editTrip}"
       styleClass="submit"
       reRender="myTripsTable,editTripTable"
       oncomplete="checkResponseStatus('editTripView:editTripForm:responseStatus');" />
      
       <a4j:commandButton value="Cancel"
       action="#{tripEdit.cancel}"
       styleClass="submit"
       reRender="editTripTable"
       onclick="closePopup();return false;" />
      
       </h:panelGrid>
       </h:form>
       </t:div>
      </t:div>
      </f:subview>
      


      When I try to save changes (press Edit Trip button) I get "Error during model data update" for all fields.
      I really don't understand what the problem is, every thing looks fine. Or is it???

      Thanks


        • 1. Re: Error during model data update
          smokingapipe

          Check for null values in your Trip object. It gets created when the bean starts. Fine. But what about the object fields in Trip? I'm looking at this: #{selectedTrip.startDate.time}. If selectedTrip.startDate is null, that will result in a data model update error on all fields I believe. Whenever I see data model update, I look at the objects to see if there are null arrays or that kind of thing.

          • 2. Re: Error during model data update
            yoav200

            but when i look at the page i see values in the input fields, that is my problem. it looks like there are value.
            can it be related to the object scope ?

            • 3. Re: Error during model data update
              yoav200

              figure out the problem,
              i was trying to update an object that was out of scope.

              setting up a conversetion solved the problem.