Struts 2 - не удалось найти действие или результат

Я настроил аннотацию для возврата значений в виде текста. Но это дает мне ошибку: не удалось найти действие или результат.

Ошибка консоли:

org.apache.struts2.dispatcher.Dispatcher - Could not find action or result
/part!finder.xhtml
No result defined for action action.PartAction and result success

Аннотация:

@Action(value="part!finder", results = {
    @Result(name="SUCCESS", type="stream", params = {"contentType", "text/html", "inputName", "inputStream"}),
    @Result(name="success", type="stream", params = {"contentType", "text/html", "inputName", "inputStream"})
}) 
public String finder() {
  try {
    inputStream = new ByteArrayInputStream(finder1().getBytes());
  }
  catch(Exception e) { }
    return SUCCESS;
  }
}

2 ответа

Измените имя действия, то есть value атрибут в @Action аннотация к value="part", ! это специальный символ, используемый для разделения имени действия и имени метода в URL. Но не в действии картирования. Добавляя ! в отображении имени действия вы делаете ваше действие недоступным для действия маппера, который ищет конфигурацию действия, которая содержит имена без !, Этот символ разделяет имя действия и имя метода, поэтому его конфигурация не соответствует отображению.

Кстати, когда вы создаете URL, и у вас включен DMI (который по умолчанию включен), тогда лучше использовать method приписывать url или же submit тег и правильный URL, который отображается в вашем действии, будет создан после рендеринга JSP (результат обработан). Вы можете проверить HTML-код, передаваемый браузеру, чтобы увидеть исходный HTML-код страницы. И вы можете обнаружить, что действие, сопоставленное методу (не по умолчанию), имеет префикс ! знак. Вы можете явно или с помощью тегов добавить метод в URL-адрес действия, чтобы выполнить метод, отличный от сопоставленного с действием.

Если вы используете DMI, примените @Action на уровне класса, и пусть DMI сделает все остальное.

Если вы аннотируете на уровне действия, объявите уникальное имя действия и не используйте DMI.

(Или его синтаксис; это сбивает с толку.)

Другие вопросы по тегам