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

Код: 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
29.12.2013, 21:57
    #38515524
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: очистить значения формы
можно присваивать вручную всем кому надо null
...
Рейтинг: 0 / 0
29.12.2013, 21:59
    #38515527
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: очистить значения формы
Nixic,
в методе save() это и происходит,
или где нужно?
...
Рейтинг: 0 / 0
29.12.2013, 22:16
    #38515540
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: очистить значения формы
Тоже была такая проблема - очистить поля.
Нашел 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
29.12.2013, 23:31
    #38515576
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: очистить значения формы
ivanra,
не уверен, что применяется это так

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



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


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