2015-03-24 2 views
0
<h:form id="registrationForm"> 
      UserName: 
      <p:inputText id="usernameInput" value="#{userUI.thisUsername}" /> 
    <br /> 
      Password: 
      <p:inputText id="passwordInput" value="#{userUI.thisPassword}" /> 
    <br /> 
      <p:commandButton actionListener="#{userUI.createUser}" 
      update="registrationForm" value="Create" /> 
</h:form>  

Я хочу, чтобы эта форма сбросила свои значения после отправки. Я ввожу имя пользователя и пароль, нажимаю submit, он сбрасывает значения и сохраняет пустые значения, а не те, которые я ввел. Пробовал перемещать commandButton из h: form, но ничего не изменил. Также попытался добавить <p:ajax update="registrationForm" resetValues="true" /> Он по-прежнему сохранял пустые значения. Как мне это сделать правильно?p: commandButton update action не очистит поля ввода после отправки

+0

Называется ваш боб UserUI? И у вас есть сеттер и getter, называемый 'setThisUsername (String thisUsername)' и 'getThisUsername()'? Кроме того, когда вы пишете 'actionListener =" # {userUI.createUser} ', соответствующая подпись является' public void actionListener (событие ActionEvent) ', поэтому вы можете написать' actionListener = "# {userUI.createUser()}" или ' action = "# {userUI.createUser}" ', если ваша сигнатура метода является' public void createUser() ' –

+0

ли приложение удаляет настройки полей или метод прослушивателя действий при отладке? –

+0

убедитесь, что у вас есть сеттер-установщик по полям, и что такое ваш бэк-бэк-область? также попробуйте изменить действие actionListener на действие – Sarz

ответ

0

Дай это дело: Bean имеет расширенный запрос. Чтобы сбросить значения, повторите инициализацию полей в конструкторе сообщений или вызовите их вручную в методе createUser.

@ManagedBean 
@RequestScoped 
public class UserUI implements Serializable { 
    private static final long serialVersionUID = 1L; 

    private String thisUsername; 
    private String thisPassword; 

    public UserUI(){ 
    } 

    @PostConstruct 
    public void init(){ 
     thisUsername=""; 
     thisPassword=""; 
    } 

    public void createUser(){ 
     System.out.println("ThisUserName :"+thisUsername); 
     System.out.println("thisPassword :"+thisPassword); 
     init(); 
    } 


    /////////GETTER SETTER 
    //thisUsername 
    //thisPassword 
} 

Ваш webPage.xhtml будет выглядеть следующим образом:

<h:form id="registrationForm"> 
      <p:panelGrid columns="2"> 

      <h:outputLabel value="UserName:" for="usernameInput" /> 
      <p:inputText id="usernameInput" value="#{userUI.thisUsername}" /> 

      <h:outputLabel value="Password:" for="passwordInput" /> 
      <p:inputText id="passwordInput" value="#{userUI.thisPassword}" /> 

      <p/> 
      <p:commandButton action="#{userUI.createUser}" update="@form" value="Create" /> 
      </p:panelGrid> 
</h:form> 
+0

Это работает по назначению (сохраняется значения, которые помещаются в полях), но значения не отправляйтесь в исходное состояние после отправки. – eight

+0

Я отредактировал ответ для вас !! – Sarz

+0

Значения по-прежнему присутствуют после создания create. – eight

Смежные вопросы