Mam podstawowe pytanie w podpórkach, dlaczego musimy mieć <global-forwards>
i <global-exceptions>
w struts-config.xml. Jeśli możemy osiągnąć to samo z samym <action-mappings>
.Dlaczego potrzebujemy globalnych wyjątków w tłumie?
Odpowiedz
<global-forwards>
Rozważyć jesteś walidacji Haslo dla różnych adresów URL, takich jak update.do, insert.do delete.do itd Jeśli jest to ważny użytkownik trzeba postępować z neccesary action.if nie doczekać logowania page.See mapowania poniżej
<action-mappings>
<action path="/insert" type="controller.Insert">
<forward name="success" path="/insert.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>
<action path="/update" type="controller.Update">
<forward name="success" path="/update.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>
<action path="/delete" type="controller.Delete">
<forward name="success" path="/delete.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>
</action-mappings>
Zamiast powtarzania <forward name="failure" path="/login.jsp"/>
można zadeklarować to w <global-forwards>
jak poniżej
<global-forwards>
<forward name="failure" path="/login.jsp"/>
</global-forwards>
teraz można remo ve <forward name="failure" path="/login.jsp"/>
w odwzorowaniach akcji.
<global-exceptions>
Jeśli otrzymasz wyjątek java.io zamiast obsługiwać ręcznie dla każdego można zadeklarować globalnie jak poniżej.
<global-exceptions>
<exception type="java.io.IOException" path="/pages/error.jsp"/>
</global-exceptions>
Mam nadzieję, że to wyjaśnia twój problem.
Jeśli mówisz o Struts 1, global-exceptions
to ExceptionHandlers
, który zajmuje się niektórymi czynnościami pod numerem Exception
, więc nie musisz zadeklarować go za działanie i uniknąć duplikowania.
Global-forwards
mają ten sam pomysł. Jeśli masz do czynienia z tą samą ścieżką w różnych akcjach, możesz uniknąć duplikacji, deklarując tylko jedną wartość: global-forward
i wszystkie akcje mogą z niej korzystać. Dzięki global-forwards
możesz również unikać adresów URL o sztywnych kodach w swoich jsp, np. Możesz zadeklarować globalne przesłanie, takie jak <forward name="loginLink" path="/login" />
, a następnie w swoim jsp <html:link forward="loginLink">Login</html:link>
.
Bardzo dziękuję człowiekowi za wyjaśnienie, ale okazało się, że to trochę za długo. – user1900662
dziękuję za wyjaśnienie, – Apache
dziękuję za wyjaśnienie, powiedzmy, jeśli jest strona błędu HTTP 500 i trzeba przekierować do strony logowania, action-mappings>, jak to zrobić, dziękuję –
Apache