【发布时间】:2015-07-19 05:52:34
【问题描述】:
我的应用程序中有一个check box,我想在用户选择check box 时调用selectPlan 方法来执行
但是当我选择 check box 时,它会在 selectPlan 方法之前调用 @PostConstruct 方法。
这会导致对后端的不必要调用,因为我已经编写了一些函数来在 @PostConstruct 中的页面加载时填充数据
<td>
<h:selectBooleanCheckbox value="#{plan.checked}">
<f:ajax listener="#{planOverlay.selectPlan}" render=":overlayForm:myTable"/>
</h:selectBooleanCheckbox>
</td>
下面是bean类
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name = "planOverlay")
@ViewScoped
public class PlanOverlayBean extends OverlayBean {
@PostConstruct
public void init() {
super.init();
loadPlansFrom_DB();
}
public void selectPlan(AjaxBehaviorEvent event) throws Exception {
getOverlay().getService().setSelectedPlan(rowdata);
}
}
【问题讨论】:
-
@BalusC 我检查了这个,但我确认我的
ViewScope正在使用import javax.faces.bean.ViewScoped; -
谁在管理 bean?该注释只能与来自同一包的 JSF 特定
@ManagedBean一起使用。 -
@BalusC 我更新了完整的课程详细信息,包括导入语句
-
哪个 JSF 实现/版本?当您在测试页面中仅
<h:body><h:form><h:selectBooleanCheckbox><f:ajax>时,问题是否也会出现? -
@BalusC 是的,它仍然会加载 bean。