Как переопределить сообщения Struts 2?

Вот часть моего файла struts.xml:

<constant name="struts.custom.i18n.resources" value="global" />

и

<action name="picture_save" method="pictureSave" class="PictureActionBean">
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">
            2097152
        </param>
        <param name="allowedTypes">
            image/bmp,image/gif,image/jpeg,image/jpg,image/png
        </param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <result name="success" type="redirect">picture</result>
    <result name="error">error</result>
</action>

Мой файл global.properties хранится непосредственно в src/ и содержит следующее:

struts.messages.error.uploading=Upload failed
struts.messages.error.file.too.large=Upload file is too large
struts.messages.error.content.type.not.allowed=Wrong file type uploaded

Вот как я показываю ошибку в jsp:

<s:fielderror />

В настоящее время, когда я загружаю, например, слишком большой файл, я получаю сообщение об ошибке:

запрос был отклонен, так как его размер (6561343) превышает настроенный максимум (2097152)

Что я хочу сделать, так это сказать «Загруженный файл слишком велик» вместо сообщения выше. Как это сделать?

ИЗМЕНИТЬ 1:

Я использую struts версии 2.1.8.1.

РЕДАКТИРОВАТЬ 2:

Другое дело, что когда я добавляю:

<result name="input" type="redirect">error</result>

к моему struts.xml, тогда ошибка вообще не отображается. Что является причиной этого?


person ThreaT    schedule 22.06.2012    source источник
comment
У меня пока не было никаких успехов. Я искал в Интернете и читал документы: struts.apache .org/2.1.8.1/docs/message-resource-files.html   -  person ThreaT    schedule 22.06.2012
comment
и: struts.apache. org/2.1.8/struts2-core/apidocs/org/apache/struts2/   -  person ThreaT    schedule 22.06.2012
comment
и: struts.apache.org/2.2.1/docs/exception- обработка.html   -  person ThreaT    schedule 22.06.2012
comment
Я только что попробовал это, но безуспешно: blog.bielu.com/2008/09/   -  person ThreaT    schedule 22.06.2012
comment
Пожалуйста, добавьте дополнительную информацию в сам пост; это также имеет то преимущество, что вы перемещаете свой вопрос обратно в начало вопросов, получая видимость. Какую версию S2 вы используете?   -  person Dave Newton    schedule 22.06.2012


Ответы (4)


хе-хе, ты застрял на этом вопросе. это кажется довольно простым.

Посмотрите пример здесь: http://struts2-by-ash.blogspot.com/2012/06/override-struts-2-messages.html

лучший, Дж

person Jaiwo99    schedule 25.06.2012
comment
@ThreaT, я могу помочь тебе, если ты опубликуешь всю конфигурацию распорок. Вы можете попробовать это (c EDIT 1), я никогда раньше не пробовал. надеюсь, это могло помочь - person Jaiwo99; 26.06.2012
comment
@ThreaT извините, это не должно работать, я только что проверил ошибку поля API, она не работает, как я думал. Я предполагаю, что ошибка может заключаться в том, что сообщение по умолчанию от struts2 каждый раз переопределяет ваше сообщение. и проверьте это (EDIT 2). это должно быть решением. - person Jaiwo99; 26.06.2012

Источник Переопределение свойств Struts по умолчанию

Фреймворк использует ряд свойств, которые можно изменить в соответствии с вашими потребностями. Чтобы изменить любое из этих свойств, укажите ключ и значение свойства в файле struts.properties. Файл свойств можно найти в любом месте пути к классам, но обычно он находится в папке /WEB-INF/classes.

При перенаправлении сообщения об ошибках исчезнут. Поскольку вы вызывали новое действие для обработки этой ситуации, struts2 предоставляет messageStoreInterceptor.

Источник MessageStoreInterceptor

Примечание. Здесь я указываю на более старую версию struts, поэтому, если вы использовали последнюю версию, измените версию в URL-адресе.

person MohanaRao SV    schedule 23.06.2012
comment
Мой вопрос в том, почему мои файлы свойств не запускаются? - person ThreaT; 25.06.2012

Используйте тег <s:actionerror /> в JSP, чтобы распечатать ошибку.

person tusar    schedule 26.06.2012

Во-первых, эта ошибка появляется, если вы пытаетесь загрузить файл, размер которого превышает размер файла, указанный вами для struts.multipart.maxSize.

Есть довольно простое решение: в файле struts.xml увеличьте значение размера файла struts.multipart.maxSize,

  <constant name="struts.multipart.maxSize" value="50777216000" />
  <param name="maximumSize">15728640</param>

Держите значение param name="maximumSize" меньше, чем значение struts.multipart.maxSize. Как и в приведенном выше случае, вы получите свою собственную ошибку, определенную в global.properties, если вы не превысите ограничение struts.multipart.maxSize.. поэтому старайтесь сохранить struts. значение multipart.maxSize в некотором верхнем диапазоне.

person Ashish Kataria    schedule 31.07.2012