#java #regex #url-rewriting #prettyfaces
#java #регулярное выражение #url-переписывание #красивые лица
Вопрос:
У меня есть проект, в котором я использую Pretty Faces для перезаписи URL. Это pretty-config.xml .
<url-mapping parentId="level2" id="level3" >
<pattern value="/#{bean.urlLiv3 }">
</pattern>
<view-id value="/index.xhtml" />
<action>#{bean.loadLiv3}</action>
</url-mapping>
<url-mapping parentId="level2" id="level2" >
<pattern value="/#{bean.urlLiv2}">
</pattern>
<view-id value="/index.xhtml" />
<action>#{bean.loadLiv2}</action>
</url-mapping>
<url-mapping parentId="main" id="level1" >
<pattern value="#{ /.*-.*/ bean.urlLiv1 }" ></pattern>
<view-id value="/index.xhtml" />
<action>#{bean.loadLiv1}</action>
</url-mapping>
<url-mapping id="main">
<pattern value="/" />
<view-id value="/index.xhtml" />
<action>#{bean.loadLiv0}</action>
</url-mapping>
»’
Это продолжается до уровня 5.
Без регулярного выражения /.*-.*/
на уровне 1 оно отлично работает для всех уровней, но когда я добавляю его, я получаю ошибку при попытке перейти на уровни 3, 4 и 5.
Это ошибка
Error parsing url: </urlliv1-8/urlliv2-43/urlliv3-20>, a parameter did not match compiled segment in pattern: /#{ /.*-.*/ bean.urlLiv1 }/#{bean.urlLiv2}/#{ bean.urlLiv3 }
У кого-нибудь есть идеи, почему я получаю эту ошибку? Спасибо
Ответ №1:
извините за слегка сбивающее с толку сообщение об ошибке. Вероятно, это связано с тем, что вы используете .*
в своих шаблонах регулярных выражений для urlLiv1
.
Основная проблема с .*
or .
заключается в том, что эти шаблоны будут соответствовать /
символам. Попробуйте использовать что-то подобное вместо этого: [^/]*
из .
средства сопоставления.