使用p:commandButton jsf提交表单

时间:2010-08-09 10:01:17

标签: jsf jsf-2 primefaces

我有一个关于提交表单内容的问题,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参数指定的表单/内容的内容。

1 个答案:

答案 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;
}

另见