我想计算我的xhtml页面上的所有元素。我希望每个下一个元素都以更大的顺序放入HashMap中。
private void addComponents(HashMap信息、列表组件、整数顺序、FacesContext上下文){
System.out.println("Start: "+order);
if ((components == null) || components.isEmpty())
{
System.out.println("return: "+order);
return;
}
order = order + 1000;
for (UIComponent c : components) {
System.out.println("HashMap: "+order);
infos.put(c.getClientId(context), order);
addComponents(infos, c.getChildren(), order, context);
System.out.println("Out: "+order);
order = order + 1000;
}
System.out.println("End: "+order);
return;
}
我有作为输出和错误的数字
HashMap: 1000
Start: 1000
return: 1000
Out: 1000
HashMap: 2000
Start: 2000
return: 2000
Out: 2000
HashMap: 3000
Start: 3000
HashMap: 4000
Start: 4000
return: 4000
Out: 4000
HashMap: 5000
Start: 5000
return: 5000
Out: 5000
HashMap: 6000
Start: 6000
return: 6000
Out: 6000
End: 7000
Out: 3000
HashMap: 4000
for (UIComponent c : components) {
order = order + 1000;
infos.put(c.getClientId(context), order);
order = addComponents(infos, c.getChildren(), order, context);
}
return order;
为什么这两种方法的作用不同?
您必须记住,Java中的参数赋值不会影响那个调用方法。因此,当您执行order=order+1000
时,这不会影响AddComponents
的调用实例中order
的值。通过返回值,您允许调用方将其值更新为递归调用的值。
解决这一问题的一个方法是使用字段,但是如果您是多线程的,那么您可能会遇到线程安全问题。
问题内容: 我正在用JavaScript准备一些变量(在我的特定情况下,我想获取GPS位置): 我想通过下面的命令按钮将它们发送到我的托管bean: 如何将JavaScript中的变量和变量发送到JSF托管bean操作方法? 问题答案: 让JS以相同的形式将它们设置为隐藏的输入值。 命令按钮操作方法可以按通常方式将它们作为bean属性进行访问。
我想通过下面的命令按钮将它们发送到我的托管bean: 我如何将和变量从JavaScript发送到JSF托管bean动作方法?
本文向大家介绍Java中final作用于变量、参数、方法及类该如何处理,包括了Java中final作用于变量、参数、方法及类该如何处理的使用技巧和注意事项,需要的朋友参考一下 Java中方法用final修饰参数的作用 在方法参数前面加final关键字就是为了防止数据在方法体重被修改。 主要分为两种情况:第一,用final修饰基本数据类型;第二,用final修饰引用数据类型。 第一种情况,修饰基本数
从性能还是从其他因素来看,哪一种方法更好? 假设我正在创建一个类,其中有一个方法,它接受2个值并将它们相加在一起。 是有两个实例变量来存储两个值,然后有一个方法来使用这些值更好,还是在调用方法时将变量作为参数传入更好? 或者仅仅使用静态方法更好,这样我就不需要在每次使用该方法时创建对象了?
组件具有变量作为观察者: 当
该方法的规范声称,该方法,从根开始,将移除最左侧的节点,并修复树结构。它还指出,如果最左侧节点没有左子节点,则将右子节点(可能为)作为左子节点附加到最左侧节点的父节点(我在代码中看不到这种情况发生的地方)。代码如下: 我只是不明白它是如何返回整个树和返回最左边的节点。主要是第一部分让我感到困惑,它说如果返回右边的子项。如果我深入到树中(由于递归调用),返回右不就会切断树的很多部分吗?