Это первый раз, когда я работаю со Struts1. Я хочу перенаправить из jsp в другой jsp. Например: если пользователь не в сеансе, перенаправите его на login.jsp; else перейдите в menu.jsp.
Я попытался сделать плитку: isLogged.jsp, которая содержит:
<logic:present name="user">
<jsp:forward page="menu.do"/>
</logic:present>
<logic:notPresent name="user">
<jsp:forward page="login.do"/>
</logic:notPresent>
Но он не перенаправляется, и страница пуста (все пустые в коде).
Я вызываю плитку на всех страницах сайта внутри.
Что я делаю не так?
Существует несколько решений 1:
Если у вас в struts-config.xml
:
<action-mappings>
<action path="/login" forward="/login.jsp"/>
<action path="/menu" forward="/menu.jsp"/>
</action-mappings>
Вы можете попробовать (как в своем коде):
<logic:present name="user">
<jsp:forward page="menu.do" />
</logic:present>
<logic:notPresent name="user">
<jsp:forward page="login.do" />
</logic:notPresent>
<logic:present name="user">
<jsp:forward page="/menu.jsp" />
</logic:present>
<logic:notPresent name="user">
<jsp:forward page="/login.jsp" />
</logic:notPresent>
logic:redirect
<logic:present name="user">
<logic:redirect page="/menu.jsp" />
</logic:present>
<logic:notPresent name="user">
<logic:redirect page="/login.jsp" />
</logic:notPresent>
global-forwards
Если у вас в struts-config.xml
:
<global-forwards>
<forward name="login" path="/login.jsp"/>
<forward name="menu" path="/menu.jsp"/>
</global-forwards>
Можешь попробовать:
<logic:present name="user">
<logic:forward name="menu" />
</logic:present>
<logic:notPresent name="user">
<logic:forward name="login" />
</logic:notPresent>
Заметки
WebContent
если вы используете проект standart eclipse). Если у вас есть файлы на другом пути, например, в папке WEB-INF
, вы должны просто изменить его на это.