2012-02-15 1 views
0

Я нахожусь в процессе изменения проекта, который использовал простой HTTPServer java на порту 8080, который использует структуру сервлета Spring MVC.Ссылки (href) не относятся к применению в Spring MVC?

Есть много ссылок в приложении, как так:

<a href=\"/rule\">Manage rules</a><br/> 

, которые работали нормально, используя запросы, такие как:

http://localhost:8080/send 

Однако они сейчас не работают, пока я не положил сервлет имя спереди так:

"<a href=\"/ServletName/rule\">Manage rules</a><br/>" 

Просто интересно, существует ли какой-либо путь вокруг этого или это вопрос просто изменить все ссылки href, чтобы добавить имя сервлета перед ними?

Обратите внимание, что мне не нужно добавлять имя сервлета в мои вызовы @RequestMapping в начале методов, это единственные ссылки, которые являются проблемой. Например. это работает отлично без добавления имени сервлета перед

@RequestMapping(value = "/send", method = RequestMethod.GET) 
+0

Использовать тег URL? –

+0

Все ссылки href относятся к текущему контексту. Если вы используете Apache Server, вы можете настроить сервер Apache для включения имени сервлета в каждом запросе, прежде чем он попадет на ваш сервер приложений. –

ответ

5

Если вы используете JSP, на ваш взгляд слоя, используйте библиотеку тегов, которая имеет ссылку тег (или написать его самостоятельно). В основном, ссылка тег должен создать URL-адрес, делая

HttpServletResponse.encodeURL(originalUrl) 

<c:url> тег JSTL делает это, но он генерирует только URL, а не ссылку тегов, но вы можете получить там, как это:

<c:url value="your/relative/url" var="somevar" /> 
<a href="${somevar}">Link Text</a> 
+0

Привет, я не использую JSP. Боюсь. Я думал, что возможно было бы сделать это через XML-файлы - возможно, переписать URL-адреса в файле web.xml или applicationContext.xml или что-то еще? – Rory

+0

@Rory хорошо какой * сделать * вы используете в себе вид слой? Не говорите мне, что вы делаете прямой вывод из java-кода. –

+0

Yep..используя параметр HttpServletResponse для выполнения httpServletResponse.getWriter.write ("); – Rory