是的!绝对地。
最简单的方法可能是使用带有正则表达式.matches()
约束的参数:
cb.addRule(
Join.path('/{path}').to("/test.xhtml"))
.where("path")
.matches("(?i)test"); // <-- your path regex pattern goes here
您还可以将Resource
orFilesystem
条件与自定义转换一起使用,以使其成为更全局的规则:
public class Lowercase implements Transposition<String>
{
@Override
public String transpose(Rewrite event, EvaluationContext context, String value)
{
return value.toLowerCase();
}
}
然后...
.addRule(Join.path("/{path}").to("/{path}.xhtml"))
.when(Resource.exists("{path}.xhtml"))
.where("path")
.matches("[a-zA-Z]+")
.transposedBy(new Lowercase())
这当然假设您的 xhtml 文件都使用小写命名方案。
如果您想走得更远,您可以创建自己的自定义.when()
条件来定位最可能的匹配项,然后替换转置中的“找到/正确”值。{path}