Как создавать собственные URL-адреса с помощью Struts2? Например, www.twitter.com/goodyzain
Я работаю над проектом, в котором я хочу предоставить уникальный URL для каждого пользователя. Например,
http://www.SocialNetwork.com/jhon , http://www.SocialNetwork.com/jasmine,
Пока я в состоянии достичь этого: http://www.SocialNetwork.com/profiles/jasmine
здесь профили мое действие, где я могу получить имя пользователя по
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.patternMatcher" value="namedVariable"/>
<action name="profiles/{username}" class="com.example.actions.ViewProfileAction">
<result name="input">/WEB-INF/jsp/profile.jsp</result>
</action>
но я хочу чего-то достичь, http://www.SocialNetwork.com/jasmine
Просто доменное имя, а затем имя пользователя.
Как твиттер делает:
www.twitter.com/username
Как этого добиться?
2 ответа
Если вы хотите использовать именованные шаблоны в сопоставлении с подстановочными знаками, вам следует настроить следующие struts.xml
:
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex"/>
теперь предположим com.example.actions.ViewProfileAction
боб имеет свойство username
и метод execute
который возвращает SUCCESS
результат. Затем вы можете отобразить действие в корневом пространстве имен "/"
настроен на ваш пакет.
<action name="{username}" class="com.example.actions.ViewProfileAction">
<result>/WEB-INF/jsp/profile.jsp</result>
</action>
вы можете получить имя в JSP, используя OGNL
<s:property value="username"/>
Также обратите внимание, что вы должны развернуть в корневой контекст, чтобы иметь
your.domain.com/username
сопоставлены с вашими действиями.
Попробуйте это. Это может сработать. Используйте Freemarker USE $
,
<action name="profiles/${username}" class="com.example.actions.ViewProfileAction">
<result name="input">/WEB-INF/jsp/profile.jsp</result>
</action>
Может сработает