【发布时间】:2017-06-07 18:11:38
【问题描述】:
我们刚刚开始将旧的 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
感谢任何提示。
【问题讨论】:
-
可能有更好的方法,但为什么不将它们作为字符串传递并检查 setter 方法是否是真正正确的类型?
-
我们有很多输入的巨大表格。我们有要求,用户可以通过电子邮件发送包含其特定 url 参数的链接。在过去,我与请求参数进行了斗争。那么
不是新的救援方法吗?这样我就不需要从请求参数重新创建 bean-properties。 -
我从未说过要从请求参数重新创建它们。我只是说将它们作为字符串传递(不使用转换器)并在您调用的设置器中,如果有效则转换为某种类型并将值传递给真实字段。在其他情况下,设置为 null 或其他。
-
或者也许您可以为每种类型创建自己的转换器,也可以执行我上面所说的操作,但是在转换器中,所以
lastPrice=undefined不会抛出错误并将真正的 lastPrice 字段保留为 'null ' 或 0 或...但仍然可能有更好的解决方案,我只是用我所拥有的知识分享我的想法(还有很多缺失;-)) -
阅读 stackoverflow.com/questions/10061422/… 我会选择自定义转换器...
标签: jsf