I have a model-driven Web action:

    public class ModelDrivenAction<T extends Object> implements
ModelDriven<T>, Preparable {

      protected Long id;
      protected T model;

      @Override
      public void prepare() {}

      public void setId(Long id) { this.id = id; }

      @Override
      public T getModel() { return model; }

      public void setModel(T model) { this.model = model; }
    }

I have another action which is not currently model-driven:

    public class OtherAction implements Preparable {

      private ModelObj modelObj;
      private Long modelId;

      @Override
      public void prepare() { modelObj =
repoService.retrieveModelById(modelId); }

      public void setModelId(Long modelId) { this.modelId = modelId; }
    }

I wish to use the model-driven action to extend the other action, and would
like to avoid having to track down all the instances in JavaScript where
the action is passed a "modelId" parameter instead of "id" if at all
possible. I thought this might work, so either modelId or id could be
passed in:

    public class OtherAction extends ModelDrivenAction<ModelObj> {

      @Override
      public void prepare() { model = repoService.retrieveModelById(id); }

      public void setModelId(Long modelId) { this.id = modelId; }
    }

However, server/path/to/other!method?modelId=123 is failing to set id. I
thought so long as a setter matched a parameter name the Struts interceptor
would call it on action invocation. Am I missing something here? I'm using
Java 6, Struts 2.1.8.1 and Spring 3.

Reply via email to