英文:
Using regular expression in 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>,参数与模式中的编译段不匹配:/#{ /.*-.*/ bean.urlLiv1 }/#{bean.urlLiv2}/#{ bean.urlLiv3 }
有人知道为什么会出现这个错误吗?
谢谢
英文:
I have a project in which I am using Pretty Faces for url rewriting.
This is the 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>
'''
It goes on up to level 5.
Without the regular expression /.*-.*/
on level 1 it works fine for every level, but when I add it I get an error when trying to navigate on levels 3, 4 and 5.
This is the error
> Error parsing url: </urlliv1-8/urlliv2-43/urlliv3-20>, a parameter did not match compiled segment in pattern: /#{ /.*-.*/ bean.urlLiv1 }/#{bean.urlLiv2}/#{ bean.urlLiv3 }
Does anyone has an idea why I get this error?
Thanks
答案1
得分: 0
抱歉,对于稍微令人困惑的错误消息。这可能是因为您在 urlLiv1
的正则模式中使用了 .*
。
.*
或 .
的一个主要问题是这些模式会匹配 /
字符。尝试使用类似这样的内容:[^/]*
而不是 .
匹配器。
英文:
sorry for the slightly confusing error message. This is likely due to the fact that you are using .*
in your regex patterns for urlLiv1
.
A major problem with .*
or .
is that these patterns will match /
characters. Try using something like this instead: [^/]*
of the .
matcher.
专注分享java语言的经验与见解,让所有开发者获益!
评论