Jsf <;f:viewParam>;:忽略错误的参数

Jsf <;f:viewParam>;:忽略错误的参数,jsf,Jsf,我们刚刚开始将一个旧的JSF1项目迁移到jsf版本2.3,并提出了新的需求。目前我正在处理使用viewparams的页面。默认忽略错误参数类型的正确方法是什么 例如,对于page searchResults.xhtml的此定义: 如果有人发出以下请求,最好的方法是忽略无效参数或将其作为null处理: 理想情况下,这将导致: 谢谢你的提示 据我所知,您使用的默认面转换器不能接受/忽略传递给它的无效值并忽略它们 为此,您需要创建自己的自定义转换器,在其中对正确的类型进行转换,如果转换成功,则

我们刚刚开始将一个旧的JSF1项目迁移到jsf版本2.3,并提出了新的需求。目前我正在处理使用viewparams的页面。默认忽略错误参数类型的正确方法是什么

例如,对于page searchResults.xhtml的此定义:


如果有人发出以下请求,最好的方法是忽略无效参数或将其作为null处理:

理想情况下,这将导致:


谢谢你的提示

据我所知,您使用的默认面转换器不能接受/忽略传递给它的无效值并忽略它们

为此,您需要创建自己的自定义转换器,在其中对正确的类型进行转换,如果转换成功,则返回转换值,如果转换失败,则返回一些默认值

对于更复杂的参数/转换器组合,只要存在一个id就可以读取一个


注释中也使用了整个概念,这可能是一个有趣的解决方案。如果转换失败,他们会将字段设置为null。也可以查看该页面上的演示。

可能有更好的方法,但为什么不将它们作为字符串传递,然后检查setter方法是否为真正正确的类型?我们有很多输入的巨大表单。我们还要求,用户可以通过电子邮件发送包含其特定url参数的链接。在过去,我一直在与请求参数作斗争。那么,新的救援计划不是针对这一点吗?这样我就不需要从请求参数重新创建bean属性,我从来没有说过要从请求参数重新创建它们。我只是说将它们作为字符串传递(不使用转换器),在您调用的setter中,如果有效,则转换为特定类型,并将值传递给实字段。在其他情况下,设置null或其他任何值。或者,您可以为每种类型创建您自己的转换器,该类型也可以执行上面所述的操作,但在转换器中,
lastPrice=undefined
不会抛出错误,并将实际的lastPrice字段保留为“null”或0或。。。但可能还有更好的解决方案,我只是在分享我的想法和我所拥有的知识(还有很多遗漏;-))阅读我想要的自定义转换器。。。
<f:metadata>
   <f:viewParam name="lastPrice" 
             value="#{ReportAgentBean.lastPrice}" converter="javax.faces.Double"/>

   <f:viewParam name="currentPrice" 
             value="#{ReportAgentBean.currentPrice}" converter="javax.faces.Double"/>

   <f:viewParam name="listPrice" 
             value="#{ReportAgentBean.listPrice}" converter="javax.faces.Double"/>
</f:metadata>