Командная кнопка Primefaces не работает должным образом

1

Я хочу, когда я нажму кнопку 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". Есть идеи?

  • 0
    пожалуйста, опубликуйте больше кода, в частности, все <h: form> ... </ h: form> edit * на самом деле не делайте этого. Я думаю, что jsf достаточно умен, чтобы хранить значения в текстовых полях на POST. В вашем методе резервного компонента #{requestBean.addRequest()} вам может потребоваться сбросить все значения на ноль / пробел
  • 0
    Вы также можете посмотреть на resetValues для <f: ajax>
Показать ещё 2 комментария
Теги:
jsf
primefaces

5 ответов

1
Лучший ответ

Есть много способов добиться этого.

  1. Вы можете настроить свой управляемый bean-запрос.
  2. Вы можете установить значения равными null в beb-компоненте после отправки.
  3. Вы можете использовать resetValues (установить в true) компонента p:ajax.
  4. Вы можете использовать компонент p:resetInput внутри вашего p:commandButton
  5. Вы можете использовать метод RequestContext.getCurrentInstance().reset("reference to the component to reset") в вашем фонотеке.

Есть примеры этих методов на Primefaces - ShowCase, поиск ResetInput разделе Misc.

0

Вот как я должен был это сделать - кто знает, почему:

      <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>
0

Попробуйте эти;

<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()}"/>
  • 0
    Там написано: «<p: ajax> Событие: изменение не поддерживается». и где именно я должен поставить эту строку.
0

Я не думаю, что обновление в стилерисов работает с селектором #id, попробуйте с классом стиля:

<h:form styleClass="form-selector"> 

<p:commandButton update="@(.form-selector)" />
  • 0
    Не работайте для меня, мне даже не удалось исправить это с помощью приведенного выше предложения ... именно поэтому я создал новую страницу и перенаправить на нее после отправки формы.
0

В случае JSF когда мы вводим какой-либо текст во входном файле и что входное изображение сопоставляется с обратным bean-компонентом, тогда на странице пользовательского интерфейса отображается текущее значение значения bean-компонента на странице UI-страницы.

Пример: если у вас есть поле firstName в java-классе, и вы <p:inputText/> имя с помощью <p:inputText/> и нажмите кнопку " Save. поэтому вам нужно actionListener="#{requestBean.addRequest()}" значение null в firstName после нажатия кнопки save в методе actionListener="#{requestBean.addRequest()}". И используйте update = "@form". если оба не работают, то для этого вам нужно написать JavaScripts. если не работа, дайте мне знать.

  • 0
    Я перепробовал все написанное выше, но результат все тот же. <h: commandButton value = "Save" id = "saveBtn" actionListener = "# {requestBean.addRequest ()}" update = "@ form" /> и размещение методов set для всех свойств в методе addRequest () не помогло ,
  • 0
    @ankushyadav, нет необходимости в Javascript.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню