Вперед от действия к действию - PullRequest
2 голосов
/ 14 декабря 2011

Добрый день в моем часовом поясе.

Я занимаюсь разработкой веб-приложения с использованием Struts Framework.Проще говоря, когда пользователь вызывает приложение, первым действием, которое будет вызвано, является SecurityAction, затем это действие перенаправляет на одно из двух действий, вот как я делаю перенаправление:

     if (user == "type_profile")
           forward = mapping.forward("action2Fwd");
     else
           forward = mapping.forward("action3Fwd");
     return forward;

Inthe struts-config.xml У меня есть

<global-forwards>
    <forward name="action2Fwd" path="/action2.do"/>
    <forward name="action3Fwd" path="/action3.do"/>
 </global-forwards>
<action path="/action2"
            type="com.teste.dummy.action2"
            name="actionForm" 
            validate="true"
            input="/action2.jsp">
 </action>

Мой первый вопрос: это лучший способ перенаправления с действия на другое действие?

Второй вопрос: когда я перенаправляю на другое действие, actionForm будет выполняться, как я могу знать, что этот запрос пришел от другого действия?

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

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Если вам нужно включить / отключить проверку в зависимости от того, откуда исходит форма, самым простым решением было бы поставить флаг в форме.

Флаг может быть обработан пользовательским обработчиком запросов для обеспечения поведения всего приложения. Менее элегантно, базовый класс действий может вызывать проверку вручную или не основываться на ее присутствии.

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

0 голосов
/ 27 января 2014

Я должен был сделать это с одним из моих проектов. Вот как я решил свою проблему. Надеюсь, у вас все получится.

Я назвал это действие SelectCopyFromProjectAction.do из моего jsp, используя JavaScript. Это действие называется еще один класс, который сделал больше работы.

От JSP

function selectThisCopyProject(){
    document[0].action = "SelectCopyFromProjectAction.do";
    submitForm2();
}       

struts.config

<action path="/SelectCopyFromProjectAction" type="*****.SelectCopyFromProjectAction" scope="request">
    <forward name="success" path="LoadProjectionCopyLOBAction.do?actionType=loadProjects" />
    <forward name="failure" path="/WEB-INF/jsp/project_list.jsp"/>
</action>

Среднее образование Направляет новое действие, как видно в распорках. конфиг <forward name="success" path="LoadProjectionCopyLOBAction.do" />

Если форвард "успешен", это приводит к этому действию в конфигурации:

<action path="/LoadProjectionCopyLOBAction" type="*******.LoadProjectionCopyLOBAction" name="ProjectCopyFormBean" validate="false" scope="request"  >
    <forward name="" .... />
</action>
...