Проверка некоторых обязательных полей ввода вводится перед сбросом формы в JSF + PrimeFaces - PullRequest
2 голосов
/ 13 января 2012

У меня проблема с реализацией механизма проверки обязательных полей ввода в форме JSF с использованием PrimeFaces, которые заполняются пользователем или нет перед отправкой формы.

Я использовал обязательно= "true" механизм в inputTexts для проверки и запуска пользовательского сообщения перед отправкой для запроса пользователя ввести какое-либо значение в обязательные поля, такие как:

<p:inputText id="exp" required="true" requiredMessage="#{lang.dailyCurrencyValues_exp_req_txt}" value="#{marketDataDefinitionProcesses.currencyType.explanation}"/> 

Мой начальник попросил меня сброситьстраница, если пользователь успешно завершил отправку и остается на той же странице.Для реализации этого я использовал oncomplete = "document.myForm.reset ();" на кнопке отправки, которая успешно сбрасывает форму и все поля в форме.

ОднакоЕсли пользователь не вводит все обязательные поля и нажимает кнопку отправки, форма отправляет сообщение, указанное в requiredMessage , и сбрасывает форму и все элементы в ней.Я хочу предотвратить эту ситуацию, для сброса значений, если отправка не удалась.Я попытался реализовать функцию JavaScript, которая пытается предотвратить сброс формы, если обязательные поля не заполнены.Однако снова я столкнулся с проблемой, связанной с получением значения элемента в моей форме.

<p:calendar id="dateValueId" value="#{marketDataDefinitionProcesses.currencyType.dateValue}" pattern="dd.MM.yyyy" required="true" requiredMessage="#{lang.dailyCurrencyValues_dateValueId_req_txt}"/>

Мне не удалось получить значение элемента календаря с помощью JavaScript.

А теперь жду ваших мнений при решении этой проблемы.Я думаю, что решения по извлечению значения календаря с использованием JavaScript или любого элемента JSF / PrimeFaces, который извлекает информацию о том, заполнены ли required = "true" поля или поля, являются вариантами.

С уважением ...

Фарук

Ответы [ 3 ]

2 голосов
/ 13 января 2012

Отправить редирект на то же представление после публикации. Он создаст новый запрос со всеми пустыми значениями ввода или, по крайней мере, с их значениями по умолчанию, как определено в bean-объекте области видимости запроса / представления.

public String submit() {
    // ...

    return FacesContext.getCurrentInstance().getViewRoot().getViewId() + "?faces-redirect=true";
}
0 голосов
/ 02 марта 2018

возможно, вы можете попытаться сделать это так

 public class MarketDataDefinitionProcesses{
    private CurrencyType currencyType;
    Boolean createStatus;


      public String create(){
         if(service.checkData(currencyType)){
    //insert data
    //show statusMessage or not
    createStatus=Boolean.TRUE;
    reflesh(create,createStatus);
    }
   return null;
    }
    public void reflesh(CurrencyType preNextCreateCurrency,Boolean createStatus){
     preNextCreateCurrency = new CurrencyType();
     this.currencyType = preNextCreateCurrency ;
     RequestContext rc = RequestContext.getCurrentInstance();
     rc.update("form:id"); // if the inputText in the panelGrid, you can put the panelGrid id 
     createStatus = Boolean.FALSE;
    }
    }

, когда пользователь отправит данные, странице потребуется новый экземпляр и используйте ReuqestContext для обновления формы или какой части вам нужно

0 голосов
/ 13 января 2012

Я думаю, вы можете достичь своей цели с помощью RequestContext :

<h:form id="myForm">
   ...
</h:form>

@ManagedBean
@RequestScoped
public class MrBean {
   public void doSomething() {
      // Do your thing

      RequestContext context = RequestContext.getCurrentInstance();
      context.execute("document.getElementById("myForm").reset()"); 
   }
}
PrimeFaces
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...