Как сохранить значения текстовых полей при выполнении действия ajax с немедленным = true? Мне нужно визуализировать всю форму. Я хочу пропустить проверки и обновить фазы модели при выполнении действия ajax. Я попытался использовать FacesContext.getCurrentInstance (). RenderResponse () в конце метода, который вызывается действиями ajax, но он не работает. Старые значения появляются в текстовых полях или некоторые данные очищаются в некоторых текстовых полях. Я пока не хочу обновлять бэк-бин.
Что я хочу сделать, это сохранить информацию, которую пользователь заполняет в текстовых полях. Кнопка Ajax, которую я использую, добавляет динамически больше текстовых полей, и я устанавливаю атрибут render в кнопке ajax для рендеринга всей страницы (мне нужно сделать полный рендер). Внутри метода, который я вызываю с помощью действия ajax, у меня есть «FacesContext.getCurrentInstance (). RenderResponse ();»
код кнопки:
<h:commandButton id="btnAdd" value="Add" type="button">
<f:ajax event="click" execute="@form" render=":form" listener="#{ManagedBean.add()}"/>
</h:commandButton>
И действие слушателя:
public void add() {
Person p = new Person();
ManagedBean.getPeople().add(p);
FacesContext.getCurrentInstance().renderResponse();
}
У меня есть пользовательский интерфейс: повторите, чтобы перебрать список людей, и код текстового поля:
<ui:repeat value="#{ManagedBean.people}" var="currentPerson" varStatus="i">
<h:inputText id="p" readonly="false" label="Person" value="#{currentPerson.name}" >
</h:inputText>
</ui:repeat>
Я отлаживал фазы JSF и получил:
[2/7/12 15:06:33:584 CST] 0000002f SystemOut O START PHASE RESTORE_VIEW 1
[2/7/12 15:06:34:375 CST] 0000002f SystemOut O END PHASE RESTORE_VIEW 1
[2/7/12 15:06:34:981 CST] 0000002f SystemOut O START PHASE APPLY_REQUEST_VALUES 2
[2/7/12 15:06:35:553 CST] 0000002f SystemOut O END PHASE APPLY_REQUEST_VALUES 2
[2/7/12 15:06:36:089 CST] 0000002f SystemOut O START PHASE RENDER_RESPONSE 6
[2/7/12 15:06:44:364 CST] 0000002f SystemOut O END PHASE RENDER_RESPONSE 6
Есть ли способ извлечь данные из текстовых полей и снова установить их для них в представлении после вызова ajax? Спасибо.