Конверсия штучной муки из стоек в гобелен 5 - PullRequest
3 голосов
/ 24 февраля 2009

У меня есть приложение Struts (1.3.8), которое я хотел бы преобразовать в Tapestry 5. Вероятно, не будет времени выполнить все преобразования одним махом. Я хотел бы предоставить новую функциональность в Tapestry и конвертировать существующие Struts / JSPs, если позволяет время. Кто-нибудь пытался что-то подобное? Могут ли сосуществовать Struts и Tapestry?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2009

Если вы сделали Struts так, как это делает большинство людей, у вас, вероятно, есть все ваши URL-адреса Struts, начиная с / action или заканчивая .do. Как отметили г-н Шини и Нью, это означает, что вы можете фильтровать различные URL-адреса с помощью фильтра Tapestry и фильтра или сервлета Struts. Я использовал оба, и я настоятельно рекомендую вам не давать Tapestry иметь дело с URL-адресами Struts. С Struts вы можете в значительной степени вручную кодировать URL, чтобы не было проблем с ссылками на страницы Tapestry, но если вы хотите, чтобы Tapestry ссылался на URL Struts, у вас могут возникнуть проблемы при использовании его стандартным способом. В идеале вы можете отделить часть своего приложения (например, функции внутреннего администратора) и сделать их полностью независимыми.

1 голос
/ 24 февраля 2009

Даже не используя Tapestry, я бы сказал, что любые две платформы должны иметь возможность сосуществовать, потому что в web.xml вы определяете, как URL-адреса отображаются на сервлеты / фильтры. Например, в Wicket есть фильтр, который проверяет классы Wicket, которые реализуют обработчик запросов. Если ничего не найдено, запрос передается по цепочке. Это позволит вам продолжать использовать Struts для определенных действий.

Если у вас есть несколько URL-адресов, которые вы хотите сохранить, вы можете просто изменить действие Struts для пересылки на новый внутренний URL-адрес; в конечном итоге все ваши действия с Struts, по сути, будут действиями по перезаписи URL, и вы можете просто удалить структуры и заменить их фильтром перезаписи URL.

Если ни один из ваших новых URL-адресов не будет конфликтовать с вашими старыми URL-адресами, то ничего сложного сделать не придется. Просто настройте новый фреймворк и обработчики его запросов. При обнаружении действия Struts (/doSomething.do) Struts ActionServlet отправляет запрос в действие. В struts-config.xml вы можете пересылать в нужное место, либо JSP, либо плитку, либо URL-адрес гобелена. Я предполагаю, что в Tapestry есть способ переадресовать на произвольный URL после того, как вы закончите обработку запроса; просто перейдите к действию Struts, если вам нужно.

Единственная проблема, которую я могу предвидеть, заключается в том, что Struts и Tapestry имеют противоречивые требования для сторонних библиотек. Если это не сработает, вам может быть не повезло в любой простой миграции.

0 голосов
/ 22 июля 2009

Я сделал это один раз. Я должен был установить мост между сессиями для двух платформ, так как они используют свои собственные константы / префиксы для этого. Мы постепенно переключились с устаревшего приложения на приложение T5. Мы просто использовали web.xml для указания запросов на распорки к стойкам, и запросы T5 будут отбираться фильтром T5. Я думаю, вы даже можете настроить фильтр T5, чтобы игнорировать определенные URL.

Мы также использовали фильтр URLRewrite, чтобы контролировать, куда отправляются отдельные запросы. Таким образом, страница может быть распределена в один день, а T5 - на следующий, а URL-адрес останется неизменным (это полезно, если ваше приложение Struts работает и люди в закладки)

Я прочитаю код (он у меня где-то заархивирован) и отправлю больше, если я укажу какие-либо ошибки.

Удачи.

...