У меня проблема с поиском правильного шаблона подстановки для извлечения частей моего URL-адреса в параметры действия в Struts.
Так я настроил действие. Цель шаблона - захватить два последних элемента пути и затем все, что может им предшествовать.
<action name="**/*/*" class="com.example.ObjectAction">
<param name="filter">{1}</param>
<param name="type">{2}</param>
<param name="id">{3}</param>
</action>
Вызов по URL-адресу channels/123/transmissions/456
Я получаю следующий результат (действие просто устанавливает входные параметры в POJO и возвращает его в виде XML):
<result>
<filter>channels/123/transmissions</filter>
<id/>
<type>456</type>
</result>
Должно быть:
<result>
<filter>channels/123</filter>
<id>456</id>
<type>transmissions</type>
</result>
Теперь, поскольку **
соответствует всем символам , включая косую черту, я предполагаю, что мой шаблон позволяет более чем одним способом соответствовать URL, и Struts выбирает тот, который оставляет id
пустым. Определено ли где-нибудь поведение для нескольких возможных совпадений? Могу ли я сделать шаблон менее двусмысленным? Есть ли альтернативные способы сделать это?
Я использую Struts 2.0.8. Обновление до 2.1.9 дало бы мне соответствие регулярному выражению, но у меня возникли проблемы с зависимостями Struts и моей средой OSGi, когда я перешел после 2.0.8, поэтому я хотел бы сейчас придерживаться этой версии.