Struts2: относительный путь URL-адреса

У меня есть созданный URL-адрес тегов struts2. что-то вроде этого.

<s:url action="login" var="login_url">
</s:url>

Увидев сгенерированный HTML. это дало мне это

<a href="/MyProjectName/login">login</a>

Что мне не нравится. Я все, что я хочу видеть это

<a href="login">login</a>

В настоящее время он дает мне полное название проекта. есть ли способ предотвратить это при использовании struts2


person user962206    schedule 21.01.2013    source источник
comment
Вы уверены, что это пространство имен не является контекстом?   -  person Roman C    schedule 21.01.2013
comment
@RomanC Что ты имеешь в виду?   -  person user962206    schedule 22.01.2013
comment
Я имею в виду, что MyProjectName может быть пространством имен, если вы развернуты в ROOT. И я спросил, что это.   -  person Roman C    schedule 22.01.2013
comment
О, MyProjectName — это не пространство имен. Я использую пространство имен по умолчанию. Я обновил свой вопрос.   -  person user962206    schedule 22.01.2013
comment
Посмотрите на свой вопрос, где в настоящее время я даю мне полное пространство имен   -  person Roman C    schedule 22.01.2013
comment
@RomanC ой, забыл об этом. я обновил его   -  person user962206    schedule 22.01.2013
comment
вы должны различать имя контекста веб-приложения и пространство имен, не так ли?   -  person Roman C    schedule 22.01.2013
comment
любой из них является частью uri   -  person Roman C    schedule 22.01.2013
comment
И мне нужно было знать, какой из них   -  person Roman C    schedule 22.01.2013
comment
но разные части, имя проекта может быть именем контекста, но не именем пространства имен   -  person Roman C    schedule 22.01.2013
comment
@RomanC Хорошо, я понял. сгенерированный URL-адрес '/MyProjectName/' является самим контекстом. в то время как «логин» - это uri. хотя я установил includeContext = false. сгенерированный URL-адрес по-прежнему имеет этот «/» перед входом в систему. как этот '/login', который я хочу устранить   -  person user962206    schedule 22.01.2013
comment
почему вы не сможете выполнить действие без контекста, эта косая черта указывает, что у вас нет контекста   -  person Roman C    schedule 22.01.2013
comment
потому что всякий раз, когда я использую запрос ajax вместе с состоянием PUSH HTML5. URL становится таким, как этот localhost:8090/MyProjectName/#/MyProjectName/login. из-за контекста. я нацелился на localhost:8090/MyProjectName/#/login.   -  person user962206    schedule 22.01.2013
comment
тогда вам не нужен includeContext, используйте значение = логин в теге URL   -  person Roman C    schedule 22.01.2013
comment
@RomanC это сработало. есть ли способ выбрать ваш ответ как лучший ответ?   -  person user962206    schedule 22.01.2013


Ответы (2)


Ваше приложение развернуто в этом контексте. Это нужно для того, чтобы URL-адрес работал. Если контекст отсутствует, вы получите 404 ошибки. Вы должны развернуть свое приложение как приложение ROOT, чтобы не показывать этот контекст.

person tom    schedule 21.01.2013
comment
stackoverflow.com/ вопросы/5328518/. Для jboss вы развертываете в ROOT.war - person tom; 21.01.2013
comment
Я развернул на root, но все равно ошибка 404. ошибка кажется "/" перед href. - person user962206; 21.01.2013
comment
Если вы правильно используете тег struts2 s:a, у вас не должно возникнуть этой проблемы. Убедитесь, что includeContext=true или оставьте этот параметр отключенным. По умолчанию правильно. Если вы развернули его неправильно, он может быть в контексте /root. Все URL-адреса в нашем приложении начинаются с «/» - person tom; 21.01.2013
comment
Есть ли способ удалить '/'? потому что в настоящее время я использую AJAX для загрузки его содержимого вместе с состоянием Push. при нажатии тега ‹a› страница не может быть загружена. однако, если я добавлю контекст в URL-адрес, страница загружается, но URL-адрес выглядит беспорядочно. - person user962206; 21.01.2013
comment
Подождите, почему ROOT.war? Я использую Эклипс. как бы я этого добился? - person user962206; 22.01.2013
comment
Также см. это - person Roman C; 22.01.2013

Попробуйте установить для атрибута includeContext значение false, чтобы

<s:url action="login" var="login_url" includeContext="false">
</s:url>

Для получения дополнительной информации проверьте это

person Quincy    schedule 21.01.2013
comment
Я попробовал ваше предложение, но после перехода по ссылке он дал мне 404, URL-адрес выглядел примерно так. localhost:8090/login . есть ли способ удалить лишний / ? на сгенерированном URL - person user962206; 21.01.2013
comment
После того, как я установил includeContext = false, перед URL-адресом все еще есть дополнительная косая черта, я могу ее удалить? - person user962206; 21.01.2013