Как мне найти / получить мои относительные пути при использовании restful Java и соответствующих JSP - PullRequest
2 голосов
/ 09 июня 2011

Допустим, у меня есть Contoller.java, в котором есть эти 3 функции для направления трафика на 3 jsps (index.jsp, create.jsp, show.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

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

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

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

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

1 Ответ

2 голосов
/ 09 июня 2011

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

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

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

<a href="/yourwebappcontextpath/index">index</a>

Если вы устали повторять это каждый раз, используйте <base>. Смотри также этот ответ .

...