package org.strecks.controller.chain.command;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionForm;
import org.apache.struts.chain.contexts.ActionContext;
import org.apache.struts.chain.contexts.ServletActionContext;
import org.apache.struts.config.ActionConfig;
import org.apache.struts.util.RequestUtils;
import org.strecks.form.handler.FormPopulateSource;
import org.strecks.form.handler.FormPopulateSourceImpl;
/**
* Replaces <code>PopulateActionForm</code> in chain
* @author Phil Zoio
*/
public class PopulateActionForm extends org.apache.struts.chain.commands.servlet.PopulateActionForm
{
private FormPopulateSource formPopulateSource;
public PopulateActionForm()
{
super();
formPopulateSource = newFormPopulateSource();
}
protected FormPopulateSource newFormPopulateSource()
{
return new FormPopulateSourceImpl();
}
@Override
protected void populate(ActionContext context, ActionConfig actionConfig, ActionForm actionForm) throws Exception
{
final ServletActionContext sc = (ServletActionContext) context;
final ActionForm form = sc.getActionForm();
final HttpServletRequest request = sc.getRequest();
ActionForm wrappedForm = formPopulateSource.prePopulate(form, request);
populateForm(actionConfig, request, wrappedForm);
}
protected void populateForm(ActionConfig actionConfig, final HttpServletRequest request, ActionForm wrappedForm) throws ServletException
{
RequestUtils.populate(wrappedForm, actionConfig.getPrefix(),
actionConfig.getSuffix(), request);
}
}