powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: очистить значения формы
6 сообщений из 6, страница 1 из 1
JSF: очистить значения формы
    #38515476
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После ввода значений в форму и ее выполнения, введенные значения отображаются в ней.
Значения в форме очищаюся только если обновить страницу.
Хотелось бы очистить их после выполнения формы.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
@ManagedBean(name="manager")
@SessionScoped
public class ManagerBean implements Serializable {
  
	private static final long serialVersionUID = 1L;

	private DataBean dataBean = new DataBean();

	private String key;
	private String value;
	
	public Property getSelectedProp() {
		return selectedProp;
	}

	public void setSelectedProp(Property selectedProp) {
		this.selectedProp = selectedProp;
	}

	public String getKey() {
		return key;
	}

	public void setKey(String key) {
		this.key = key;
		System.out.println("key="+key);
	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
		System.out.println("value="+value);
	}

	public void save() {
		dataBean.put(key, value);
		key = null;
		value = null;
	}
        . . .
...
Рейтинг: 0 / 0
JSF: очистить значения формы
    #38515524
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно присваивать вручную всем кому надо null
...
Рейтинг: 0 / 0
JSF: очистить значения формы
    #38515527
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nixic,
в методе save() это и происходит,
или где нужно?
...
Рейтинг: 0 / 0
JSF: очистить значения формы
    #38515540
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже была такая проблема - очистить поля.
Нашел 2 способа. Первый - просто создаем новый viewRoot и подменяем его в контекте:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
	public void refresh() {
		//log.info("refresh ");
		FacesContext context = FacesContext.getCurrentInstance();
		Application application = context.getApplication();
		ViewHandler viewHandler = application.getViewHandler();
		UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
		context.setViewRoot(viewRoot);
		context.renderResponse(); //Optional
	}


Но это из пушки по воробьям.
Можно просто чистить конкретные инпуты, если знаем их клиентский id (input.resetValue()):
Код: java
1.
2.
3.
4.
5.
6.
		FacesContext context = FacesContext.getCurrentInstance();
		UIComponent component = findComponent(context.getViewRoot(),componentId);
		if (component != null && component instanceof UIInput) {
			UIInput input = (UIInput)component;
			input.resetValue();
		} 


Ну и отсюда рекурсивная чистка формы или любого контейнера (надо знать id формы):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
	public void refresh(String componentId) {
		FacesContext context = FacesContext.getCurrentInstance();
		UIComponent component = findComponent(context.getViewRoot(),componentId);
		if (component != null)
			clearChilds(component);
	}

	/**
	 * Finds component with the given id
	 */
	private UIComponent findComponent(UIComponent c, String id) {
		if (id.equals(c.getId())) {
			return c;
		}
		Iterator<UIComponent> kids = c.getFacetsAndChildren();
		while (kids.hasNext()) {
			UIComponent found = findComponent(kids.next(), id);
			if (found != null) {
				return found;
			}
		}
		return null;
	}

	private void clearChilds(UIComponent c) {
		if (c instanceof UIInput) {
			UIInput input = (UIInput)c;
			input.resetValue();
		} else {
			Iterator<UIComponent> kids = c.getFacetsAndChildren();
			while (kids.hasNext()) {
				clearChilds(kids.next());
			}
		}
	}

Код на самом деле упрощенный, с таблицами (UIData) рекурсия немного сложнее, но обычно и такого простого хватает
...
Рейтинг: 0 / 0
JSF: очистить значения формы
    #38515576
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra,
не уверен, что применяется это так

Код: xml
1.
action="#{manager.save}"



Код: java
1.
2.
3.
4.
public void save() {
   dataBean.put(key, value);
   refresh("targetId");
}
...
Рейтинг: 0 / 0
JSF: очистить значения формы
    #38515590
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
значится так, все делается немного проще
на кнопку цепляется экшинлисенер, который ищет нужный HtmlInputText по id и очищает его
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: очистить значения формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]