запустить действие на успех действия - PullRequest
1 голос
/ 19 марта 2012

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

<action name="login" class="org.shobhan.action.LoginAction" >
<result name="success" type="dispatcher">/showProfile</result>
<result name="error" type="redirect">/Login.jsp</result>
</action> 
<action name="showProfile" class="org.shobhan.action.ShowProfileAction" >
<result name="success">/profile.jsp</result>
</action>

У меня есть оба java-файла. LoginAction и ShowProfileAction присутствуют в одной папке.

Ответы [ 3 ]

4 голосов
/ 20 марта 2012

Чтобы перенаправить на действие, используйте actionRedirect тип результата .

<result type="redirectAction">showProfile</result>
1 голос
/ 19 марта 2012
<result name="success" type="dispatcher">/WEB-INF/showProfile.jsp</result>    
<result name="error" type="dispatcher">/WEB-INF/Login.jsp</result>

Вышеуказанное НЕ вызывает другое действие, но будет работать, если у вас есть эти JSP в WEB-INF.

Диспетчер разрешает в jsp (хорошо в этом случае) и перенаправление запускает вызов с нуля. Может ли /Login.jsp вызываться из URL? Другими словами, доступен ли CONTEXT_ROOT / Login.jsp? Если это так, то вы можете перейти к нему, если нет, то это невозможно.

Как правило, не рекомендуется перенаправлять после ошибки, поскольку она удаляет полевые ошибки (и любые другие переменные и сообщения, которые могут быть полезны).

Если вы хотите вызвать действие, см. Перенаправление действия в struts.xml , чтобы получить дополнительные сведения о вызове действий и некоторые советы.

PS : тип диспетчера - это тип по умолчанию, а имя успеха - это имя по умолчанию, поэтому вы можете просто написать ...

<result>/WEB-INF/showProfile.jsp</result>    
<result name="error">/WEB-INF/Login.jsp</result>
0 голосов
/ 19 марта 2012

не должен ли ваш успешный вызов иметь расширение файла?

...