当前位置: 首页 > 面试题库 >

如何“引发” JSF2 404错误?

南宫鸿晖
2023-03-14
问题内容

假设我有一个管理用户的应用程序。您可以添加新用户,删除他们,编辑详细信息等。每个用户都有一个ID,并在URL上具有详细信息页面,如下所示:

..../user/detail.jsf?id=123

现在,如果ID
123的用户不存在怎么办?我认为自然反应将是404标准错误。与您在URL中打错字(例如/user/dtail.jsf)时所输出的完全相同。所以问题是:有这种方法吗?

还是这个反应(404)合适?

谢谢。


问题答案:

只需将验证器附加到id视图参数,如果验证失败,则在响应上设置错误代码404。

例如

考虑一下这个简单的Facelet:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

    <f:metadata>
        <f:viewParam id="id" name="id" value="#{myBean.id}" validator="#{myBean.validate}"/>
    </f:metadata>

    <h:body>

        <h:outputText value="#{myBean.id}"/>

    </h:body>

</html>

以及以下辅助bean:

@ManagedBean
@ViewScoped
public class MyBean {

    private Long id;

    public void validate(FacesContext context, UIComponent component, Object object) {
        // Do some validation
        // And if failed:
        context.getExternalContext().setResponseStatus(404);
        context.responseComplete();
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

}


 类似资料:
  • 问题内容: 我创建了一个 MySQL 函数,如果为参数传递的值无效,我想引发一个错误。在 MySQL 函数中引发错误的选项有哪些? 问题答案: MySQL 5.5 引入了信号,类似于其他语言中的异常: http://dev.mysql.com/doc/refman/5.5/en/signal.html 例如,在mysql命令行客户端中:

  • 错误:getMore命令失败:{“operationtime”:Timestamp(1547144095,335),“ok”:0,“errmsg”:“未能在$convert中解析objectId”,没有onError值:>解析到OID的字符串长度无效,预期为24,但找到0“,”code“:241,”codename“:”conversionfailure“,”$clustertime“:{”clu

  • 问题内容: 我在Eclipse中构建了一个名为“ com.hello”的程序包,并编写了一个简单的HelloWorld程序。Eclipse自动添加“ package com.hello;” 在我的程序之上 然后将HelloWorld.java放入 HelloWorld.class已放入 在Eclipse中效果很好。但是,当我进入目录“ ”并使用带有“ java HelloWorld”的命令行时,我

  • 我有一个程序,当一个按钮被点击时,radiobuttons改变文本。我还希望所有的radiobuttons在按钮被按下后都被取消选择。我的OnClickListener中有以下代码: 我收到以下错误:.ClearCheck()上的“无法解析方法”。 我哪里错了?

  • 问题内容: 假设我们有这样的东西: 问:如何使test_foo3()进行测试,但不会引发MyError?很明显,我可以测试一下: 但我想通过pytest.raises()进行测试。有可能吗?例如:在某种情况下,该函数“ foo”根本没有返回值, 恕我直言,以这种方式进行测试可能很有意义。 问题答案: 如果测试引发任何意外的异常,则测试将失败。您只需调用foo(7),就可以测试没有引发MyError

  • 问题内容: 有没有办法在Teradata存储过程中引发错误? 例如,我要检查表是否为空。如果表为空,则希望使存储过程出错,并显示错误消息“表为空”。 这将使我能够将错误提示给调用应用程序。 问题答案: TD13 +实现了标准SQL的SIGNAL / RESIGNAL 。