我对提交表单内容有疑问 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;
}

也可以看看

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top