在Pretty Faces中使用正则表达式

问题描述

我有一个项目,其中我使用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 }

有人知道为什么我会收到此错误吗? 谢谢

解决方法

对于稍微混乱的错误消息表示抱歉。这可能是由于您在.*的正则表达式模式中使用urlLiv1

.*.的主要问题是这些模式将匹配/个字符。尝试使用类似这样的方法:[^/]*匹配器中的.