使用 p:commandButton jsf 提交表单
-
27-09-2019 - |
题
我对提交表单内容有疑问 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
范围..
解决方案
它不应该造成伤害。如果你在那里做昂贵的事情,那么你应该将其移至构造函数, @PostConstruct
或相关 bean 的操作方法,或引入延迟加载或阶段嗅探。
// 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;
}
也可以看看
不隶属于 StackOverflow