Я хочу, когда я нажму кнопку commandButton, чтобы обновить мою страницу (все поля вводаText, все checkBoxes будут пустыми, как если бы страница была перезагружена. Я пробовал с update = "@requestForm", update = ": requestForm", update = "@all" ajax = "false", update = "@([id $ = requestForm])", но не успех...
Это код для моего commandButton:
<h:commandButton value="Save" id="saveBtn"
actionListener="#{requestBean.addRequest()}" ajax="false" />
Моя форма имеет id = "requestForm". Есть идеи?
Есть много способов добиться этого.
null
в beb-компоненте после отправки.resetValues
(установить в true
) компонента p:ajax
.p:resetInput
внутри вашего p:commandButton
RequestContext.getCurrentInstance().reset("reference to the component to reset")
в вашем фонотеке. Есть примеры этих методов на Primefaces - ShowCase, поиск ResetInput
разделе Misc.
Вот как я должен был это сделать - кто знает, почему:
<p:commandButton value="Reset" icon="ui-icon-refresh" process="@this" update=":form">
<p:resetInput target=":form" clearModel="true" />
</p:commandButton>
В зависимости от ваших потребностей clearModel может не понадобиться. См. Документацию PrimeFaces на resetInput clearModel (по умолчанию - false): "Когда включено, сброс ввода также устанавливает нулевые значения в значения границ, чтобы сбросить значения входов и значения модели".
Как кто-то говорит нам здесь:
На всякий случай у кого-то есть такая же проблема...
p: resetInput НЕ принимает @form в качестве цели. Вы должны указать фактический идентификатор контейнера формы/наименования, который вы хотите очистить. Я видел примеры кода онлайн (я думаю, где-то на StackOverflow), который использовал @form, поскольку target-- не обманывать, это не работает.
Вот почему я использовал target=":form"
, потому что мой корень NamingContainer был <h:form id="form">
. Там грузы информации о выборе NamingContainers вещи здесь.
Кроме того, обратите внимание, что вы можете сделать это, чтобы сначала открыть диалог подтверждения:
<p:commandButton value="Reset" icon="ui-icon-refresh" process="@this" update=":form">
<p:resetInput target=":form" clearModel="true" />
<p:confirm header="Confirm Reset" message="Are you sure you want to reset all changes?" icon="ui-icon-help" />
</p:commandButton>
<p:confirmDialog global="true" closable="true" closeOnEscape="true" showEffect="fade" hideEffect="fade">
<p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
<p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
</p:confirmDialog>
Попробуйте эти;
<p:commandButton value="Clear" process="@this" type="reset" update="requestForm">
<p:resetInput target="requestForm"/>
</p:commandButton>
Если это объект, вам нужно установить его в null и добавить ajax-прослушиватель с обновлением;
resetForm(){obj=null;}
Затем;
<p:ajax event="change" update="requestForm" listener="${resetForm()}"/>
Я не думаю, что обновление в стилерисов работает с селектором #id, попробуйте с классом стиля:
<h:form styleClass="form-selector">
<p:commandButton update="@(.form-selector)" />
В случае JSF
когда мы вводим какой-либо текст во входном файле и что входное изображение сопоставляется с обратным bean-компонентом, тогда на странице пользовательского интерфейса отображается текущее значение значения bean-компонента на странице UI-страницы.
Пример: если у вас есть поле firstName
в java-классе, и вы <p:inputText/>
имя с помощью <p:inputText/>
и нажмите кнопку " Save
. поэтому вам нужно actionListener="#{requestBean.addRequest()}"
значение null в firstName
после нажатия кнопки save
в методе actionListener="#{requestBean.addRequest()}"
. И используйте update = "@form". если оба не работают, то для этого вам нужно написать JavaScripts. если не работа, дайте мне знать.
#{requestBean.addRequest()}
вам может потребоваться сбросить все значения на ноль / пробелresetValues
для <f: ajax>