PostConstruct注释无效

 阳光ai星星 发布于 2023-02-13 18:37
  • php
  • 1 个回答
    • 阅读文档总是有帮助的,更具体地说是这些行(强调我的):

      应用PostConstruct注释的方法必须满足以下所有条件 - - 除了EJB拦截器之外,方法绝不能有任何参数,在这种情况下,它采用EJB规范定义的InvocationC ontext对象.- 方法的返回类型必须是无效的.- 该方法不得抛出已检查的异常 ...(其他要求省略)

      因此,至少不满足返回类型要求(我们不知道您的异常是否被检查,所以我删除了它们,但在这种情况下,您需要在方法中处理异常).

      总而言之,用你的方法替换你的方法

      @PostConstruct
      public void search() {
          MemberDao dao=(MemberDao) Factory.getDao(ConfigReader.getConfig().getProperty("dao.member"));
          members=dao.list(1, 10);
          membersId=new int[members.size()];
          for(int i=0;i<members.size();i++)
              membersId[i]=members.get(i).getId();
      }
      

      根据您的注释,您的异常类是经过检查的异常.因此,您必须在方法中引入try-catch块,或者让异常继承RuntimeException.如果您选择以前的方式,您可以重新抛出未经检查的异常IllegalStateException,或者,例如,发送重定向,以防它为时已晚:

      @PostConstruct
      public void search() {
          try {
              MemberDao dao=(MemberDao) Factory.getDao(ConfigReader.getConfig().getProperty("dao.member"));
              members=dao.list(1, 10);
              membersId=new int[members.size()];
              for(int i=0;i<members.size();i++)
                  membersId[i]=members.get(i).getId();
          } catch(DaoImplNotFoundException dinf) {
              //option one
              throw new IllegalStateException("Something went wrong.");
              //option two
              FacesContext.getCurrentInstance().getExternalContext().redirect("/error.xhtml");
          } //other exception types
      }
      

      2023-02-13 18:39 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有