Использование регулярного выражения в Pretty Faces

#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 . заключается в том, что эти шаблоны будут соответствовать / символам. Попробуйте использовать что-то подобное вместо этого: [^/]* из . средства сопоставления.