Я могу распространить struts2 ActionErrors между различными классами действия?

Если Вы не заботитесь о порядке, можно просто пихнуть объекты в HashSet, если Вы делаете , хотят поддержать порядок, можно сделать что-то вроде этого:

var unique = new List();
var hs = new HashSet();
foreach (T t in list)
    if (hs.Add(t))
        unique.Add(t);

Или Linq путь:

var hs = new HashSet();
list.All( x =>  hs.Add(x) );

Редактирование: HashSet метод O(N) время и O(N), пространство при сортировке и затем создании уникальным (как предложено lassevk и другие) O(N*lgN) время и O(1) пространство, таким образом, это не столь ясно мне (как это было на первый взгляд), что сортировка, путь является нижним (мои извинения за временный файл вниз голосуют...)

11
задан sk. 1 July 2009 в 17:42
поделиться

3 ответа

Это может быть способ сделать это, но я не думаю, что это очень хороший способ использовать распорки. Если actionA не проходит проверку, вы, скорее всего, захотите иметь либо результат ввода без перенаправления для него, который показывает ошибки, либо, возможно, страницу с глобальной ошибкой, которая может отображать его.

Я полагаю, вы могли бы где-то сохранить ошибки действия как и сеанс между перенаправлениями, но вы не будете использовать фреймворк в том виде, в каком он был разработан.

4
ответ дан 3 December 2019 в 02:11
поделиться

Эта функция не поддерживается Struts2 по умолчанию. Решение существует (это делается простым перехватчиком struts, который хранит сообщения в сеансе).

решение с исходным кодом

0
ответ дан 3 December 2019 в 02:11
поделиться

В основном вам нужно использовать предопределенные перехватчики, называемые store, которые принимают operationMode: store и извлекают:

<package name="a" extends="struts-default" namespace="/a">
    <action name="actionA" class="actionAClass">
        <!-- Here you are storing the Error messages -->
        <interceptor-ref name="store">
            <param name="operationMode">STORE</param>
        </interceptor-ref>

        <!-- include your default stack in case you need to load other interceptors -->
        <interceptor-ref name="defaultStack" />

        <result name="input" type="redirectAction">
            <param name="actionName">actionB</param>
            <param name="namespace">/b</param>
        </result>
        <result type="redirectAction">
            <param name="actionName">actionB</param>
            <param name="namespace">/b</param>
        </result>
    </action>
</package>
<package name="b" extends="struts-default" namespace="/b">
    <action name="actionB" class="actionBClass">

        <interceptor-ref name="store">
            <param name="operationMode">RETRIEVE</param>
        </interceptor-ref>

        <!-- include your default stack in case you need to load other interceptors -->
        <interceptor-ref name="defaultStack" />

        <result>/foo.jsp</result>
    </action>
</package>
7
ответ дан 3 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: