我们刚开始将旧的jsf 1项目迁移到具有新要求的jsf 2.3版。目前我正在使用viewparams的页面上工作。什么是静默忽略错误参数类型的正确方法?
例如,这个页面searchResults.xhtml的定义:
<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>
什么是忽略无效参数的最佳方法,或者如果有人触发如下请求,则将它们处理为null:
http://www.ourapp.com/reports/searchResults?lastPrice=undefined?currentPrice=INVALIDSTRING
理想情况下会导致:
http://www.ourapp.com/reports/searchResults
谢谢你的暗示。
据我所知,您使用的默认面转换器不能接受/忽略传递给它的无效值并忽略它们。
为此,您需要创建自己的自定义转换器,在那里进行正确的转换,如果转换成功,则返回转换值,如果失败,则返回一些默认值。
这是你通常为更复杂的参数/转换器组合做的事情,其中只有id的存在才能读取full complex object from somewhere
整个概念也用于OmniFaces @Param
注释,这可能是一个有趣的解决方案。如果转换失败,它们将字段设置为null。也请参阅该页面上的演示。