@ dmatob является правильным. Если у вас есть страницы JSF подкрепленная боба ViewScoped:
- Если метод возвращает нуль, то компонент не будет воссоздан (значения остаются теми же), но страница перезагружается.
- Если метод возвращает ту же или другую страницу, компонент будет воссоздан (он сбрасывает значения), и страница перезагружается.
Я столкнулся с тем же самым часом назад: попытка сбросить значения, когда метод успешно выполнен. Таким образом, после прочтения вокруг и вокруг, я нашел то, что, наконец, выработанный:
Вы должны использовать действие вместо ActionListener (Различия here)
<p:commandButton value="Save" action="#{backingBean.save()}" />
Так метод должен return a Строка
public String save(){
if(validations==true){
return "currentpage.xhtml?faces-redirect=true";
}
return null;
}
Wh en все в порядке, оно воссоздает компонент, обновляет страницу и восстанавливает значения. В противном случае метод возвращает значение null, чтобы обновить страницу, кроме компонента.
[Изменено]
Если метод возвращает нуль или пустую строку, компонент не воссозданы: PostConstruct (INIT событие) это не срабатывает, так это означает, что значения оставайся таким же. В другом случае, если он возвращает строку (перенаправление на некоторую страницу), событие init вызывается так, что значения инициализируются.
Страница JSF перезагружается в обоих случаях: при возврате null/empty String или нет.
Надеется, что это поможет вам ... Позволь мне знать ;-)
Решение находится в правильном направлении, но вы нигде не объясняете, почему поданные значения, похоже, придерживаются, даже если вид и bean-компоненты воссозданы. Это то, о чем интересовался OP. Думаю, он уже знал правильное решение отправки перенаправления. – BalusC
Спасибо за ответ. Действительно, я знаю решение перенаправления, чтобы очистить форму. Но, как сказал BalusC, я хотел бы знать, почему отображаемые значения формы сохраняются, даже если bean и view воссозданы после возвращения пустой строки в методе действий (не прослушиватель!). – Quercus
При возврате пустой строки или нулевого значения представленные значения остаются в стороне из-за того, что компонент не воссоздается (PostConstruct не вызывается), поэтому означает, что эти значения не инициализируются. – JairKaulitz89