Первичные события на месте, которые не запускаются внутри datatable

#jsf-2 #primefaces

#jsf-2 #первичные пространства

Вопрос:

Я использую jsf 2.0, primefaces 3.0 М3 и jboss 6.0.0 в проекте. Я пытаюсь сделать ячейку таблицы редактируемой, как в primefaces showcase, но события для сохранения и отмены не запускались. Итак, я решил попробовать сделать редактируемым только одно поле внутри datable с помощью элемента inplace и использовать событие сохранения. Это также не сработало. Код выглядит следующим образом:

 <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> searchResu<

public Environment()
{

}
//....

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

    return null;
}

//....
}
  

Кто-нибудь может помочь?

Спасибо

Келли

Ответ №1:

Компоненты CDI (помеченные @Named ) не имеют @ViewScoped .
Вы не можете смешивать импорт управляемых компонентов JSF с импортом CDI.

Попробуйте использовать sessionScope (помните, что класс должен реализовывать сериализуемость).

(ps: вероятно, вы будете использовать неправильный импорт, такой как
import javax.faces.bean.SessionScoped;
вместо
import javax.enterprise.context.SessionScoped; )