Вот и идея, которая является как программным, так и конфигурационным решением. Вы можете создать собственный ActionMapping ...
public class YourPOSTRequiredActionMapping extends ActionMapping { }
... и используйте в конфигурации Struts только для сопоставлений POST.
<action path="/your/path" type="YourAction" className="YourPOSTRequiredActionMapping" />
Затем вы можете расширить распорки RequestProcessor и переопределить processMapping
public class YourRequestProcessor extends RequestProcessor {
protected ActionMapping processMapping(HttpServletRequest request, HttpServletResponse response, String path) throws IOException {
ActionMapping mapping = super.processMapping(request, response, path);
if (mapping instanceof YourPOSTRequiredActionMapping) {
if (!request.getMethod().equals("POST")) {
mapping = null;
}
}
return mapping;
}
}
Обязательно настройте конфигурацию Struts для использования YourRequestProcessor.
<controller processorClass="YourRequestProcessor" nocache="true" contentType="text/html; charset=UTF-8" locale="false" />
Я основал это на каком-то старом рабочем коде, но я даже не скомпилировал приведенный выше пример кода.