我有一个接收2到6个参数的jsf页面,我想让这个url看起来更好,所以我开始使用漂亮的面孔。当我为2个参数创建规则时,一切都运行良好,但是当我创建第二个规则时,页面也可以工作,url正好像我希望的那样,但是我在Eclipse控制台中收到错误消息。 我认为这是因为我正在尝试为同一个视图创建一个规则...这可能吗?
漂亮-配置:
<url-mapping id="departamento">
<pattern value="/#{codDep}/#{departamento} " />
<view-id value="/departamento.jsf" />
</url-mapping>
<url-mapping parentId="departamento" id="sessao">
<pattern value="/#{codSec}/#{secao}" />
<view-id value="/departamento.jsf" />
</url-mapping>
控制台错误:
java.lang.NumberFormatException: For input string: "javax.faces.resource"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at project.Controller.inicializar(Controller.java:82)
控制器方法:
public void inicializar(ComponentSystemEvent event)
{
FacesContext context = FacesContext.getCurrentInstance();
if (!context.isPostback())
{
departamento = new Departamento(Integer.parseInt(codigoDepartamento), descricaoDepartamento, null, null);
}
}
问题是它不应该传递这个参数“javax.faces.resource” 有时候“css”,我甚至都不知道它来自哪里。
答案 0 :(得分:1)
我想这是因为JSF资源请求(包含javax.faces.resource
)与您的某个模式匹配。 PrettyFaces拦截请求,并将所请求路径的部分内容写入您的bean。
您必须更改模式,使其仅匹配您想要的URL,而不是像JSF资源,CSS或图像文件那样。您可以添加一些像/dep/
这样的唯一固定字符串前缀:
<url-mapping id="departamento">
<pattern value="/dep/#{codDep}/#{departamento} " />
<view-id value="/departamento.jsf" />
</url-mapping>
或限制路径参数允许的值。例如codDep
是一个数字,您可以使用:
<url-mapping id="departamento">
<pattern value="/#{ /[0-9]+/ codDep }/#{departamento} " />
<view-id value="/departamento.jsf" />
</url-mapping>
有关详细信息,请参阅PrettyFaces文档的这一部分:
http://ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.pathparams.regex