我需要从java.util.Set中删除一个元素,我在h:dataTable中迭代。很简单对吧?这就是我所拥有的(com是我的集合,endpoint是迭代变量):
<a4j:commandButton image="/img/delete.png"
action="#{person.com.remove(endpoint)}"
execute="@this" render="myTable" />对于JSF-2隐式导航,布尔返回值通过.toString()转换并用作导航结果,这是没有意义的。
当然,我可以引入另一个bean方法,它只会吞噬返回值,但这似乎是不必要的重复。我能避免那样做吗?如果是的话,怎么做?
环境有丰富的面和全方位,所以任何使用方便的功能,从那里也是罚款。
发布于 2013-11-22 13:24:42
(Ab)使用actionListener。它不强制导航。
<a4j:commandButton image="/img/delete.png"
actionListener="#{person.com.remove(endpoint)}"
execute="@this" render="myTable" />唯一的问题可能是操作侦听器上的异常不是以相同的方式处理,而是将它们视为绕过所有剩余操作侦听器和操作(如果有的话)的指示。因此,它们不会在错误页面中结束。不过,在这种特殊情况下,remove()方法不太可能导致异常。如果集合是空的,操作方法就永远不会被排在第一位(或者您的代码必须是线程不安全的,同时该项必须被队列和操作调用之间的另一个线程删除,但这不是JSF问题)。
另请参阅:
https://stackoverflow.com/questions/20144687
复制相似问题