Primefaces inplace事件未在数据表中触发

时间:2011-10-07 18:00:01

标签: jsf-2 primefaces

我在项目中使用jsf 2.0,primefaces 3.0M3和jboss 6.0.0。我正在尝试使表格单元格可编辑,如在primefaces展示,但保存和取消的事件没有被解雇。因此,我决定尝试使用inplace元素在datable中只编辑一个字段并使用save事件。它也不起作用。代码如下:

<ui:define name="search_results">
        <h:form id="search_results">
        <p:dataTable id="tbl" var="amb" value="#{environment.searchResult}">
            <p:column id="firstcolumn">
                <f:facet id="nameFct" name="header">#{label['menu.admin.environment']}</f:facet>
                <p:inplace editor="true" effectSpeed="fast" event="dblclick">
                    <p:inputText value="#{amb.dsAmbiente}" />
                    <p:ajax event="save" listener="#{environment.update(amb)}" />
                </p:inplace>
            </p:column>
        </p:dataTable>
        </h:form>
    </ui:define>

以及在侦听器中调用的类

@Named("environment")
@ViewScoped
public class Environment extends AbstractBean implements Serializable{
private static final long serialVersionUID = 1L;

private AmbienteRemote environmentRemote;
private List<Empresa> companies;
private Ambiente env;
@Inject
private transient FacesContext context;
@Inject
private transient Messages messages;
private String compSearch;
private String envSearch;
private EnumFlStatusAmbiente statusSearch;
private List<Ambiente> searchResult;

public Environment()
{

}
//....

public String update(final Ambiente amb)
{
    System.out.println("update");

    return null;
}

//....
}

有人可以帮忙吗?

由于

凯利

1 个答案:

答案 0 :(得分:0)

CDI组件(使用@Named注释)没有@ViewScoped 您不能将JSF Managed Beans导入与CDI导入混合使用。

尝试使用sessionScope(记住 - 类必须实现Serializable)。

(ps:可能你会使用错误的导入,如
import javax.faces.bean.SessionScoped;
代替
import javax.enterprise.context.SessionScoped;