: Ignore wrong parameters silently

问题描述 投票:1回答:1

我们刚开始将旧的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

谢谢你的暗示。

jsf
1个回答
2
投票

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

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

这是你通常为更复杂的参数/转换器组合做的事情,其中​​只有id的存在才能读取full complex object from somewhere

整个概念也用于OmniFaces @Param注释,这可能是一个有趣的解决方案。如果转换失败,它们将字段设置为null。也请参阅该页面上的演示。

© www.soinside.com 2019 - 2024. All rights reserved.