У меня есть приложение struts2 с одной страницей, которая может отображать одно из нескольких значений, хранящихся в базе данных. Приложение предназначено для школы со многими кафедрами, и в каждом отделе есть много программ. Страница отдела доступа с помощью URL, как этогоСоздание дружественных URL-адресов для динамических ресурсов в struts2
department.action?id=2
и DepartmentAction загрузит отдел с идентификатором = 2 для отображения. Все это прекрасно, если пользователь просто просматривает сайт, но ему становится неудобно, если я хочу предоставить ссылку, чтобы сказать отделу инженерии в газетах. Ссылка должна быть www.myschooldomain.com/department.action?id=2. Я вижу ряд проблем с этим.
Во-первых, это не удобно. Во-вторых, он подвержен разрушению, потому что отделы динамически поддерживаются, а идентификатор для отдела может меняться без предупреждения, что делает связь неустойчивой.
Я бы предпочел напечатать такой URL: www.myschooldomain.com/department/engineering и попросить его как-то перейти на department.action? Id = 2.
Мои мысли до сих пор: создайте действие, которое будет анализировать URL-адрес имени отдела в конце, а затем посмотреть его по имени. Возможно, я мог бы добавить поле friendlyurl в базу данных для каждого отдела.
Но вопрос в следующем: есть ли лучший способ сделать это в struts2?
Спасибо.
Обновление (май 2009 г.): Я только что случайно наткнулся на этот вопрос и подумал, что я скажу, что я сделал, чтобы решить эту проблему.
Я создал новый пакет в struts.xml, называемый отделами. В этом пакете есть только одно действие, сопоставленное с *. Таким образом, он ловит все запросы на mydomain.com/departments/anything.html.
В классе действия я просто разбираю URL-адрес и просматриваю часть между отделами и .html, и это имя отдела, поэтому я могу выполнить поиск в базе данных для него. Это работает уже почти 5 месяцев, и я реализовал его для других областей сайта.
Я не хотел воскресить эту старую нить - я думал, что просматриваю новые ответы, да! – Pool 2009-04-08 12:55:34