package cyrille.springframework.web.servlet.view;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.AbstractUrlBasedView;
import org.springframework.web.servlet.view.RedirectView;
/**
* Equivalent of a {@link RedirectView} implemented with an auto submitted form.
*
* @author <a href="mailto:cyrille.leclerc@pobox.com">Cyrille Le Clerc</a>
*/
public class AutoSubmitView extends AbstractUrlBasedView implements View {
public AutoSubmitView(String url) {
super(url);
}
@SuppressWarnings("unchecked")
@Override
protected void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
Map<String, String> formFields = model;
out.println("<html><body>");
out.println("<form method='POST' name='autoLoginForm' action='" + getUrl() + "'>");
for (Map.Entry<String, String> entry : formFields.entrySet()) {
out.println("<input type=hidden name='" + entry.getKey() + "' value='" + entry.getValue() + "' />");
}
out.println("</form>");
out.println("<script language='JavaScript'>document.forms['autoLoginForm'].submit();</script>");
out.println("</body></html>");
}
}