Как найти / получить мои относительные пути при использовании restful java и соответствующих JSP


Скажи, что у меня есть Контоллер.java, которая имеет эти 3 функции для направления трафика на 3 JSP (index.ЖСП, создать.джсп, покажи.jsp)

public class Controller
{

  @GET
  @Path("/index")
  public void index(@Context HttpServletRequest request,
  @Context HttpServletResponse response)
  {
      //If I get hit I redirect to index.jsp

  }

  @POST
  @Path("/create")
  public void create(@FormParam ("name") String name, @Context HttpServletRequest     request)
  @Context HttpServletResponse response
  {
       //if i get hit I take the form param name do stuff to create new instance of whatever

  }

  @GET
  @Path("/show/{id}")
  public void show (@PathParam(id) String id, @Context HttpServletRequest request,
  @Context HttpServletResponse response)
  {
      //if I get hit I show the object with the given id from the url

  }
}

В моем составном JSP

Индекс.jsp просто простая страница для отображения созданных типов-достаточно легко

Твори.jsp Просто сформируйте тип и перенаправьте его обратно в индекс.jsp на submit -- >Проблема: ссылка обратно на индекс.jsp будет <a href="index">index</a>

Шоу.jsp просто форма с дефуальными значениями выбранных экземпляр и кнопка для возврата в индекс -- Проблема: ссылка обратно на индекс.jsp будет <a href="../index">index</a>

Вопрос: Как я могу ссылаться на один и тот же путь на разных страницах без быть таким двусмысленным. Делает отдых api предлагают способ обойти это без необходимость узнать, где находится ваша страница относительно другого?

1 2

1 ответ:

Просто используйте доменные ссылки. То есть пусть он начинается с /. Путь к контексту можно получить динамически с помощью HttpServletRequest#getContextPath().

<a href="${pageContext.request.contextPath}/index">index</a>

Это закончится в HTML, как

<a href="/yourwebappcontextpath/index">index</a>
Если вы устали повторять его каждый раз, используйте <base>. Смотрите также этот ответ.