如果 f:viewParam / converter 返回 null,如何将用户发送到 404 页面?

2023-12-15

假设您有一个带有视图参数的页面,例如/widgets?widgetId=1

    <f:metadata>
        <f:viewParam
            name="widgetId"
            value="#{widgetIdMB.widgetId}"
            converter="#{widgetIDConverter}" />
    </f:metadata>

所以,少说你的转换器会抛出一个ConverterException,因为有人试图导航到/widgets?widgetId=1000000,数据库中不存在。当这种情况发生时,有没有办法将用户发送到 404 页面?

EDIT:

我使用转换器来转换该值。如果无法在数据库中查找该值,转换器将返回 null,而不是抛出 ConverterException。

然后我使用验证器。验证器将抛出验证异常,但在调用omnifaces实用程序类后不会抛出:Faces.responseSendError(404, "Not Found");

这似乎是关注点分离的最佳实现。


Use ExternalContext#responseSendError() in the Converter当条件满足时。

context.getExternalContext().responseSendError(404, message);
context.responseComplete();
return null;

别忘了打电话FacesContext#responseComplete()之后,由于某种原因,这并没有隐式完成,与ExternalContext#redirect()。否则,JSF 会将当前页面附加到响应末尾,或者抛出一个IllegalStateException当它已经承诺时。

而不是神奇的数字404你也可以使用HttpServletResponse.SC_NOT_FOUND.

context.getExternalContext().responseSendError(HttpServletResponse.SC_NOT_FOUND, message);
context.responseComplete();
return null;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果 f:viewParam / converter 返回 null,如何将用户发送到 404 页面? 的相关文章

随机推荐

  • php过滤数组值并从多维数组中删除重复项

    大家好 我试图从此数组中查找重复的 x 值并将其删除 只保留唯一的值 例如我的数组是 Array 0 gt Array x gt 0 5 y gt 23 1 gt Array x gt 23 y gt 21 75 2 gt Array x
  • ArrayList 区分大小写

    我目前正在使用属于 ArrayList 类的 contains 方法进行搜索 有没有办法让java中的搜索不区分大小写 我发现在 C 中可以使用 OrdinalIgnoreCase 有没有等效的 java 或其他方法来做到这一点 谢谢 您可
  • flutter找不到Android SDK

    我已经安装了flutter通过 AUR 我也有aur android sdk 26 0 2 1安装 当我跑步时flutter run I get Warning This package referenced a Flutter repos
  • 需要有关如何使用霍夫曼代码对单词进行编码的帮助

    如何使用哈夫曼代码对单词进行编码 例如 NEED 霍夫曼编码基本上使用可变长度位字符串来表示标记 通常是字符 但有几个例外 令牌越常见 其位长度越短 并且在处理流时 通常 是动态的 通常有两个特殊的标记 ESCAPE 和 END STREA
  • css3 逐帧动画

    我需要逐帧制作动画来更改元素的背景位置 我需要在没有缓动或线性动画的情况下执行此操作 只需更改背景位置即可 用css3动画可以实现吗 是的 它是通过新的阶跃函数缓动曲线属性实现的 使用 step start 或 step end 代替 ea
  • Oracle 11g 中的 XML 表

    这是一个示例表 create table xmltemp mydoc xmltype 这是一个小的 xml 文档 insert into xmltemp values xmltype
  • 如何阻止类对象的构造?

    我在任何地方都找不到答案 可以通过使用条件并抛出异常来完成 但是还有其他方法吗 目前尚不清楚为什么您想要一个在任何情况下都无法构造的类 但您可以使所有构造函数private并没有为他们提供任何实施 这将阻止编译时的构造 在 C 11 中你可
  • 如何在 bash shell 中格式化字符串?

    我正在尝试在linux中格式化变量 str Initial Value 168 echo New Value echo str cut d f2 gt gt test txt 我期待以下输出 Value 168 但相反得到 Value 16
  • 子集 data.table 仅保留大于应用于所有列的特定值的元素

    我想要子集news 下 创建news2 下文进一步 将仅包括每个元素中的abs 值 的行 列news gt 0 01 下面是我尝试过的代码 gr lt data frame which abs news 1 ncol news with F
  • mysql_real_escape_string() 不应该在数据库中留下斜杠吗?

    我正在使用 smarty 和mysql real escape string 对于用户输入 当我插入一些代码时 or 并在 phpmyadmin 中查找 它显示没有反斜杠 当我从数据库获取记录时 我也没有反斜杠 但是当我只是传递转义字符串而
  • 仅字母、下划线、连字符、撇号的正则表达式

    我想要一个只接受字母 连字符 撇号 下划线的正则表达式 我试过 A Za z 但它不起作用 请帮忙 你的正则表达式是错误的 尝试这个 0 9A Za z OR w 连字符需要位于字符类中的第一个或最后一个位置以避免转义 另外 如果不允许空字
  • 使用多线程模块将 API 数据检索到数据帧中

    我正在使用第三方 API 从大量天数中检索不同标签的 10 分钟数据 当前数据提取可能需要长达几分钟的时间 具体取决于天数和标签数量 因此 我正在尝试多线程 我知道这对于繁重的 IO 操作很有用 API 调用如下 我已替换了实际的 API
  • 在 d3.js 中嵌入 json 文件

    http bl ocks org mbostock 4339083我正在使用这个 代替d3 json d 4063550 flare json function error flare 我如何让它使用 html 中的 json 文件 就像我
  • 如何将 ZipInputStream 转换为 InputStream?

    我有代码 其中 ZipInputSream 转换为 byte 但我不知道如何将其转换为输入流 private void convertStream String encoding ZipInputStream in throws IOExc
  • 如何在 Swift 中的两个场景之间传递数据?

    我有两个场景 我想使用转场将单个变量传递到另一个场景 我已经尝试过 但不幸的是我见过的所有教程都涉及故事板 我没有使用故事板 我正在以编程方式完成所有这些工作 这是我试图初始化的segue func prepareForSegue segu
  • 刷新 recyclerview 片段中的项目

    我的应用程序有 4 个带有滑动选项卡布局的选项卡 我在 MainActivity 中使用了一个视图寻呼机 每个选项卡都有 4 个片段 我使用 volley 从 mysql 接收数据 卡片视图 回收者视图和 JSON 我想使用 SwipeRe
  • 与 MATLAB SQL Server 进行通信

    有没有办法有效地沟通这些平台 我是说 像导出 SQL Server 和加载 Matlab 之类的东西 但以有效的方式 我找到了adodb 工具到目前为止 文件交换工作得最好 它比数据库工具箱或任何先前的包装解决方案要快得多 不需要额外的工具
  • 在 OpenCV 中使用 FeatureDetector 会导致访问冲突

    我需要找到并匹配立体图像中的特征点 因此我想比较 OpenCV 2 4 5 支持的不同特征检测算法 通过将 SURF SIFT 等传递给函数 代码片段 include opencv2 opencv hpp include
  • 绘制鼠标指针图标?

    我正在编写一些有趣的小工具 我希望能够在与原始鼠标不同的位置绘制第二个 或更多 鼠标指针图标 但根据原始鼠标的移动来移动它 我知道如何跟踪鼠标的移动 但我不知道如何绘制 重绘鼠标指针 有人可以帮忙吗 您可以使用以下代码 CURSORINFO
  • 如果 f:viewParam / converter 返回 null,如何将用户发送到 404 页面?

    假设您有一个带有视图参数的页面 例如 widgets widgetId 1