Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Маппинг в Struts2


Автор: batigoal 23.1.2008, 23:29
Взялся я сейчас за struts2 (для совсем маленького проектика, просто чтобы понять идеологию).

Главное, для чего он мне был нужен - для поддержки ЧПУ. Но столкнулся с проблемкой, и не нашёл, как её обойти.

Допустим, есть такой маппинг в struts.xml:
Код

<struts>
    <package name="my_package" extends="struts-default">
        <action name="my_action" converter="" class="MyClass">
            <result>jsp/my_page.jsp</result>
        </action>
    </package>
</struts>


Теперь для того чтобы сослаться на этот action приходится писать что-то вроде:
Код

<a href="my_action.action">


Разумеется, от приставки .action в УРЛе очень хочется избавиться, но как - я не нашёл :(

Ткните носом, плиз.

Автор: tux 24.1.2008, 11:29
Похоже нужно в конфигурацию Struts2 подсунуть что-то такое:
Код

<constant name="struts.action.extension" value="do" />

Автор: batigoal 24.1.2008, 22:14
tux, хорошая идея, но не помогло :(
Даже если оставить value="", то к имени приходится добавлять точку (my_action.)

Похоже, всё-таки придется обвешивать проект Апачем и разбираться с mod-rewrite... Лишняя тяжесть :(

Автор: Stampede 25.1.2008, 03:01
batigoal, если желание поупражняться со Struts2 для тебя в этом проекте не самоцель, то не попробовать ли тебе сделать этот вебсайт на сам знаешь на чем?

Автор: batigoal 25.1.2008, 12:45
Отчасти - самоцель smile

Сам знаешь что мною тоже не забыто  smile  хотя и отложено...

Автор: Shaggie 15.5.2008, 05:40
batigoal, расскажешь как решил (если решил)?

Автор: axdes2 19.8.2008, 10:01
Так как решил? Интерестно

Автор: batigoal 19.8.2008, 10:14
Нет, проблема пока подвешена вместе с веб-частью проектика smile

Автор: Platon 19.8.2008, 10:23
batigoal, посмотри на мой http://vingrad.ru/blogs/platon/2008/05/23/java-for-web-how-hard-you-are/ ;) там нет никаких постфиксов ^_^ Думал в первую очередь о ЧПУ

Автор: alexadr 20.8.2008, 16:28
Если я правильно понял, то вот это:
Код

<a href="my_action.action">


Не custom tag. Т.е. это уже конечный хтмл-ный косок кода. Вот если бы это был стратсовский custom tag, на вскидку не помню какой, то скорее всего стратс сам бы и все сделал. т.е. в jsp было бы что-то вроде:

Код

<html:a href="my_action">


а на выходе
Код

<a href="my_action.action">


Автор: batigoal 20.8.2008, 22:10
alexadr, спасибо за мысль! Попробую.

Автор: v1rtu0z 21.8.2008, 08:39
а я в своем проектике не ввожу урлы для экшнов. у меня везде переход по ссылкам. то есть, в jsp написаны такие вещи:
Код

<a href="<s:url action="UserProfile" namespace="/" />">Профиль пользователя</a>


а при переходе по этой ссылке УРЛ выглядит как надо, т.е. UserProfile.action

Автор: batigoal 24.8.2008, 16:17
v1rtu0z, так мне-то как раз надо, чтобы он выглядел не так, а маскировался под http://localhost:8080/UserProfile для браузера. У тебя же браузер в строке статуса будет писать http://localhost:8080/UserProfile.action

alexadr, то же самое. Моя цель - добиться не того, чтобы не писать .action в JSP, а того, чтобы .action не попадало в итоговый HTML.

Автор: Platon 24.8.2008, 16:26
batigoal, а мое предложение чего не комментируешь?

Автор: batigoal 24.8.2008, 16:27
Platon, потому что до твоего фреймворка ещё руки не дошли ;-) Пока не попробую - комментариев, разумеется, не будет.

Автор: ivg 24.8.2008, 17:01
batigoal, http://struts.apache.org/2.0.11.2/docs/actionmapper.html? И уже даже что то http://struts.apache.org/2.0.11.2/docs/restfulactionmapper.html есть похоже...

Автор: batigoal 24.8.2008, 22:46
ivg, REST - это не то, что мне нужно, но без URL-rewriting его не реализовать, поэтому взгляну на пример, спасибо.

Автор: ivg 25.8.2008, 02:43
Цитата(batigoal @  25.1.2008,  01:14 Найти цитируемый пост)
Даже если оставить value="", то к имени приходится добавлять точку (my_action.)

Я пробовал со struts-2.0.11.2 - не надо добавлять точку. 
Код

<a href="<s:url action="my_action"/>">Action</a>
<s:form action="Login">
    <s:textfield key="username"/>
    <s:password key="password" />
    <s:submit/>
</s:form>
 выводит на странице без точки и работает. И если напрямую в строке браузера писать без точки - тоже, а вот с точкой нет. Грешу на разность версий. smile Но при этом появляется проблема - статические ресурсы (*.css и т. д.) не отдаются. Если взять за установку, что экшены будут без точек и раширений, а статические ресурсы с расширениями - то, я думаю, проблема решается собственной реализацией org.apache.struts2.dispatcher.mapper.ActionMapper

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)