[ https://issues.apache.org/jira/browse/WW-5126?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17332979#comment-17332979 ]
Patrice DUROUX commented on WW-5126: ------------------------------------ Hi, My case may be summarize like the following: {code:java} public class EntityAction<T> extends ActionSupport implements ModelDriven<T> { private static final long serialVersionUID = 7393395802128656232L; private T model; @Override public T getModel() { return model; } @Inject("DAO") private DAO dao; @Override public String execute() throws Exception { model = dao.merge(model); return super.execute(); } public EntityAction(Class<T> c) { try { this.model = c.getConstructor(new Class[] {}).newInstance(); } catch (Exception e) { } } } {code} You can also think about having the ID part of the model (entity) feed by the query and have back the full model using dao.find() result. I hope it helps. Thanks! > inconsistancy between Model Driven and Model Driven Interceptor documentations > ------------------------------------------------------------------------------ > > Key: WW-5126 > URL: https://issues.apache.org/jira/browse/WW-5126 > Project: Struts 2 > Issue Type: Improvement > Reporter: Patrice DUROUX > Assignee: Yasser Zamani > Priority: Minor > Fix For: 2.5.27, 2.6 > > Time Spent: 1h > Remaining Estimate: 0h > > Hi, > > The Model Driven documentation says: > If an action class implements the interface > {{com.opensymphony.xwork2.ModelDriven}} then it needs to return an object > from the {{getModel()}} method. Struts will then populate the fields of this > object with the request parameters, and *this object will be placed on top of > the stack once the action is executed*. Validation will also be performed on > this model object, instead of the action. Please read about > [VisitorFieldValidator > Annotation|https://github.com/apache/struts-site/blob/master/source/core-developers/visitor-field-validator-annotation.html] > which can help you validate model's fields. > where as the Model Driven Interceptor documentation says: > h2. Parameters > * {{refreshModelBeforeResult}} - *set to true if you want the model to be > refreshed on the value stack after action execution and before result > execution*. The setting is useful if you want to change the model instance > during the action execution phase, like when loading it from the data layer. > This will result in {{getModel()}} being called at least twice. > > Looking into the code shows that the default parameter value is false. > Moreover the interceptor refresh process is based on call to the {{equals}} > method and this method may have been redefined, in a JPA context for > instance. The replacement is then not systematic and may not be done. > -- This message was sent by Atlassian Jira (v8.3.4#803005)