Error during model data update
yoav200 Jan 10, 2007 10:50 AMI'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