在调用getter之后执行业务逻辑

我想在调用getter和setter之后编写我的业务逻辑(两次),因为我在业务逻辑中使用它们的对象值。 然而,在getter之前调用Construct,Post构造,actionevents,..

那么如果我不想在其中编写业务逻辑,我如何使用getter的值?

我想导航到该站点并从显示到outputText的数据库中获取数据。

在bean的(post)构造函数中完成工作。

@ManagedBean @RequestScoped public class Bean { private String data; @EJB private SomeService service; @PostConstruct public void init() { data = service.load(); } // Getter. } 

  

当我更改(primefaces)selectOneMenu值时,bean获取selectOneMenu的值并在数据库中为该值执行查询,并将查询结果写入outputText。

在附加到输入组件的change事件的bean的ajax监听器方法中完成工作。

 @ManagedBean @ViewScoped public class Bean { private String selectedItem; private String result; @EJB private SomeService service; public void changeSelectedItem(AjaxBehaviorEvent event) { result = service.find(selectedItem); } // Getters+setter. } 

      

在调用getter 之后执行此操作为时已晚。 此时JSF已经完成渲染HTML输出。 之后您无法更改HTML输出。

你在思考中犯了一个基本错误。

没有像“The Getters”这样的阶段。 Getter只是读取bean属性的惯例。

这些属性可以在整个请求中单独读取。 有些人可能会在“创建/恢复视图”期间查阅,而其他人可能会在“渲染响应”期间查阅。

没有一个特定阶段的JSF可以扫描你的代码,并且它的乐趣就是调用它找到的每个getter。

你的解决方案就是让这个想法得以实现。 我知道你可能很难放弃你认为是真实的东西,但是吸气,清醒你的心灵,告别你目前对事情如何运作的理解,并从头开始重新学习。

然后,您将立即找到自己的答案。 祝好运!

完全没有理解你的问题,但显而易见的方法是将逻辑放入getter和setter中。