方法在return语句后循环

时间:2013-10-17 00:47:42

标签: jsf

我有这个JSF支持bean方法:

public void filterProductsByCategory()
   {
      filtered = true;
      products = controller.obtainProductListByCategory(selectedDesiredCategory);
      showMessage("Filtered by selected category");
   } 

调用obtainProductListByCategory方法。这将返回products的列表。当需要刷新JSF页面(它访问所需变量的getter)时,它会进入getter:

 public List<Product> getProducts()
   {
      if(filtered)
      {
          filtered = false;
          return products;
      }
      products = controller.obtainProductList();
      return products;
   }

obtainProductList检索数据库中的所有产品。我的应用程序是一个网络市场,我要做的是首先:显示所有产品(工作正常),然后:按类别排序(有问题)。出于某种原因,即使在最后一个方法输入if语句并返回之后,它也会返回内部,变量filtered为false并继续执行该方法。

我通过调试发现这段代码似乎也每次都执行(位于 Method.java 中):

public Object invoke(Object obj, Object... args)
        throws IllegalAccessException, IllegalArgumentException,
           InvocationTargetException
    {
        if (!override) {
            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
                Class<?> caller = Reflection.getCallerClass(1);

                checkAccess(caller, clazz, obj, modifiers);
            }
        }
        MethodAccessor ma = methodAccessor;             // read volatile
        if (ma == null) {
            ma = acquireMethodAccessor();
        }
        return ma.invoke(obj, args);
    }

奇怪的是,我第一次检索所有对象(我数据库中的所有对象)时,我的List中存在的products重复了上面提到的循环。最后,网页会重新获得所有产品,即使我尝试过滤结果datatable这里发生了什么?

0 个答案:

没有答案