讓form表單可以使用RESTful
在SpringMVC中有HiddenHttpMethodFilter的過濾器,可以去過濾form的POST方法中的hiddn欄位的值,已達成RESTful。
在WebAppInitializer.java中建立HiddenHttpMethodFilter:
import javax.servlet.Filter;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {RootAppConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {WebAppConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter cef = new CharacterEncodingFilter();
cef.setEncoding("UTF-8");
cef.setForceEncoding(true);
HiddenHttpMethodFilter hiddenHemthodFilter = new HiddenHttpMethodFilter();
return new Filter[] {cef, hiddenHemthodFilter};
}
}
form的寫法:
<form method="post" action="controller>
<input type="hidden" name="_method" value="put" />
</form>
<form method="post" action="controller>
<input type="hidden" name="_method" value="delete" />
</form>
(* name="_method",底線()是必要的,沒用的話HiddenHttpMethodFilter會找不到)
留言
張貼留言