Я пытаюсь реализовать функцию автосохранения в очень длинной форме.Изменение динамических значений ввода с помощью jQuery не влияет на событие ajax onchange компонента JSF
У меня есть эта форма в JSF с большим количеством <h:inputText/>
s, который не может быть пустым или пустым из-за аннотации валидации @NotNull javax. Кроме того, у меня есть некоторые <h:selectOneMenu>
S, которые имеют
<f:ajax event="change" render="form-blueform-pnl_team" execute="form-blueform-pnl_team" listener="${improvementView.onTeamChange()}" />
что обновить некоторые другие <h:inputText/>
клет динамически.
представить, как:
<h:commandButton action="${improvementView.save()}" styleClass="btn btn-primary ink-reaction marginleft5 hidden" id="save-blueform-btn">
<f:ajax execute="@all" render="@all"/>
</h:commandButton>
<a href="#" id="form-blueform-save-blueform-btn-ui" class="btn btn-primary ink-reaction marginleft5">
<i class="fa fa-save"></i> Save
</a>
JQuery принимает событие щелчка # форм-blueform-копи-blueform-БТН-щ и проверяет некоторые вещи. После всего, что все в порядке, он нажимает # form-blueform-save-blueform-btn. Все работает отлично до тех пор.
Проблема возникает, когда я динамически хочу изменить значение входов JSF с помощью $ (# someinput) .val ("new value"). Значение ОТНОСИТСЯ отлично, но событие ajax onchange выпадающего меню - например, не выполняется. Кроме того, если я попытаюсь отправить форму, проверки jQuery появятся в порядке, но тогда проверки JSF не будут утверждать, что все равно null. По сути, компоненты JSF не распознают изменения значения jQuery.
Я боролся с этим в течение некоторого времени и не могу найти ничего полезного. Я был бы очень признателен, если бы кто-нибудь мог направить меня сюда.
Здесь вы можете найти еще фрагменты моего кода:
Это как мои <h:inputText>
s выглядеть
<h:inputText id="name" value="${improvementView.item.name}" styleClass="form-control" pt:required="required" />
Это как моя JQuery обрабатывает # форм-blueform-копи-blueform-BTN -ui нажмите:
$("#form-blueform-save-blueform-btn-ui").click(function(e) {
var valid = $(".form-blueform")[0].checkValidity();
if(valid) {
$(".card-actionbar-row .btn").hide();
$("#form-blueform-loading-submit").css({"display":"inline-block"});
$("#form-blueform-save-blueform-btn").click();
} else {
$(".form-blueform")[0].reportValidity();
}
e.preventDefault();
});
Это журнал, который она возвращается Tomcat:
ПРЕДУПРЕЖДЕНИЕ: $ {ImproveView.save()}: java.lang.IllegalArgumentException: не может проанализировать номер аргумента: interpolatedMessage = 'не может быть null' javax.faces.FacesException: $ {ImproveView.save()} : java.lang.IllegalArgumentException: невозможно разобрать аргумент number: interpolatedMessage = 'не может быть null' at com.sun.faces.application.ActionListenerImpl.processAction (ActionListenerImpl.java:118) at javax.faces.component. UICommand.broadcast (UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents (UIViewRoot.java:790) at javax.faces.component.UIViewRoot.processApplication (UIViewRoot.java:1282) at com. sun.faces.lifecycle.InvokeApplicationPhase.execute (InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase (Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute (LifecycleImpl.java:198) at javax.faces.webapp.FacesServlet.service (FacesServlet.java:646) на org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:291) на org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) в орг .apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.Java: 52) на org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:239) на org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) на com.madatait. ci.security.filters.AuthenticationFilter.doFilter (AuthenticationFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) на org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:217) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:106) в орг. apache.catalina.authenticator.AuthenticatorBase.invoke (Authent icatorBase.java:502) на org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:142) на org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:79) at org. apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) на org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:518) at org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:673) at org. apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1500) на org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1456) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) на java.util.concurrent. ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) at java.lang.Thread.run (Thread.java: 745)
, и это повторяется для каждого ввода, который не может быть пустым.