Java 使用jQuery动态更改输入值不会';t操作JSF组件的ajaxonchange事件
我试图在一个很长的表单上实现一个自动保存功能 我在JSF中有很多Java 使用jQuery动态更改输入值不会';t操作JSF组件的ajaxonchange事件,java,jquery,ajax,jsf,Java,Jquery,Ajax,Jsf,我试图在一个很长的表单上实现一个自动保存功能 我在JSF中有很多表单,由于@NotNull javax验证注释,这些表单不能为null或空。另外,我还有一些 动态更新其他一些s值 提交的内容如下: <h:commandButton action="${improvementView.save()}" styleClass="btn btn-primary ink-reaction marginleft5 hidden" id="save-blueform-btn"> <
表单,由于@NotNull javax验证注释,这些表单不能为null或空。另外,我还有一些
动态更新其他一些
s值
提交的内容如下:
<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>
这是Tomcat返回的日志:
警告:${improvementView.save()}:java.lang.IllegalArgumentException:无法分析参数编号:interpolatedMessage='may not null'
javax.faces.FacesException:${improvementView.save()}:java.lang.IllegalArgumentException:无法分析参数编号:interpolatedMessage='may not null'
位于com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
在javax.faces.component.UICommand.broadcast(UICommand.java:315)
位于javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
位于javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
位于com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
位于com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
在com.sun.faces.lifecycle.LifecycleImpl.execute上(LifecycleImpl.java:198)
位于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)
位于org.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)上
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
位于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)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
位于org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
位于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)
位于org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
运行(Thread.java:745)
对于每个不能为null的输入,都会重复这个过程。好的,所以我终于找到了答案。我必须使用jQuery的.change()手动触发每个输入的onchange事件,以便执行ajax,JSF识别值的动态变化
$(".form-control").each(function() {
$(this).change();
});
我相信这至少能帮某人节省几个小时。好吧,所以我终于找到了答案。我必须使用jQuery的.change()手动触发每个输入的onchange事件,以便执行ajax,JSF识别值的动态变化
$(".form-control").each(function() {
$(this).change();
});
我相信这至少能帮某人节省几个小时。你救了我一个下午这正是我需要的!你救了我一个下午这正是我需要的!
$(".form-control").each(function() {
$(this).change();
});