我有一个关于提交表单内容的问题,p:commandbutton
往往以ajax方式工作。
如果我有这样的代码:
<f:verbatim rendered="#{myBean.constructor}"></f:verbatim >
<h:form prependId="false">
....
.....
<p:commandButton value="#{msg.Add_Parameter_Set}" update="addParameterSetPnl,msgs" action="#{myBean.initNewParametersSet}"/>
</h:form>
使用命令按钮提交表单时,是否会调用f:verbatim中的方法getContructor(我更新表单的不同部分)?如何阻止它被调用?
我认为提交表单只会呈现update
参数指定的表单/内容的内容。
答案 0 :(得分:0)
它不应该伤害。如果你在那里做了昂贵的东西,那么你应该将它移动到相关bean的构造函数@PostConstruct
或action方法,或者引入延迟加载或阶段嗅探。
// In Constructor..
public Bean() {
constructed = getItSomehow();
}
// ..or @PostConstruct..
@PostConstruct
public void init() {
constructed = getItSomehow();
}
// ..or action method..
public String submit() {
constructed = getItSomehow();
return "outcome";
}
// ..or lazy loading..
public boolean getConstructed() {
if (constructed == null) constructed = getItSomehow();
return constructed;
}
// ..or phase sniffing (this one updates during render response only).
public boolean getConstructed() {
if (FacesContext.getCurrentInstance().getRenderResponse()) constructed = getItSomehow();
return constructed;
}