#html #jsp #url #servlets
#HTML #jsp #url #сервлеты
Вопрос:
У меня есть нижний колонтитул с несколькими ссылками, которые открываются на той же вкладке, но я хочу, чтобы они открывались на новой вкладке всякий раз, когда пользователь находится на странице оплаты. Я решил сделать это с использованием boolean
условия, которое становится истинным всякий раз, когда пользователь включен /payment.jsp
. В чем я не уверен, так это в том, как получить текущую страницу?
<% boolean paymentPage = false; %>
<% if(paymentPage ){ %>
<new tab>
<% } else{ %>
<same tab>
<% } %>
Мне кажется, что лучший способ сделать это — использовать HttpServletRequest
интерфейс. Я надеялся, что смогу получить совет о том, как реализовать это в моем коде. Я предполагаю, что это будет выглядеть примерно так?
<% private boolean paymentPageTest (HttpServletRequest request) { %>
<% return request.getRequestURL.equals("/Payment.jsp"); %>
<% } %>
Ответ №1:
Согласно вашему предположению (логике), функция paymentPageTest должна быть объявлена в теге объявления JSP, как показано ниже:
<%!
private boolean paymentPageTest (HttpServletRequest request){
return request.getRequestURL.equals("/Payment.jsp");
}
%>
Используйте приведенную ниже логику, чтобы проверить, является ли страница /Payment.jsp
<%!
private boolean paymentPageTest(HttpServletRequest request){
String path = ((HttpServletRequest) request).getRequestURI();
if (path.endsWith("/Payment.jsp")) {
return true;//new tab
}else{
return false;//current tab
}
}
%>
Комментарии:
1. Да, это действительно выглядит чище. К сожалению, это не работает.
2. хорошо, логику необходимо обновить. Попытаюсь ее собрать. Где вы написали первый код (код в первом блоке кода)? какой jsp / файл? Мне нужно его имя файла.
Ответ №2:
В файле JSP:
request.getAttribute("javax.servlet.forward.request_uri")
Ответ №3:
Понял это.
<% boolean paymentPage = false; %>
<% String str = request.getRequestURL().toString(); %>
<% if(str == "<url>") {paymentPage = true;} %>
<% if(paymentPage ){ %>
<new tab>
<% } else{ %>
<same tab>
<% } %>