Я раньше не работал с Struts Action Invocation Framework, но сообщение об исключительной ситуации мне знакомо по Tiles.Тайлс выдает сообщение, подобное этому: Specified RequestProcessor not compatible with TilesRequestProcessor
, поэтому я думаю, что помимо привычного сообщения (в вашем случае Specified RequestProcessor not compatible with saif
) есть также вероятность того, что причина будет той же.
Вот здесь article , который исправляет это в плагине Tiles.Может помочь вам.
Когда сервлет Struts инициализируется, он выполняет инициализацию всех плагинов.Сообщение должно исходить от метода init вашего плагина, и если оно совпадает с Tiles, то причиной должна быть проверка с Class.isAssignableFrom .
EDIT: Посмотрел исходный код для плагина SAIF и нашел его в нем:
protected void initRequestProcessorClass(ActionServlet servlet, ModuleConfig config) throws ServletException {
.........
.........
ControllerConfig ctrlConfig = config.getControllerConfig();
String configProcessorClassname = ctrlConfig.getProcessorClass();
.........
.........
// Check if specified request processor is compatible with saif.
try {
Class saifProcessorClass = SAIFRequestProcessor.class;
Class saifTilesProcessorClass = SAIFTilesRequestProcessor.class;
Class configProcessorClass = Class.forName(configProcessorClassname);
if (!saifProcessorClass.isAssignableFrom(configProcessorClass)
&& !saifTilesProcessorClass.isAssignableFrom(configProcessorClass)) {
String msg = "Specified RequestProcessor not compatible with saif.";
throw new ServletException(msg);
}
} catch (Exception ex) {
throw new ServletException(ex);
}
.........
.........
}
Кажется, он такой же, как и с плагином Tiles, поэтому указанная мною статья содержит ответ.