Uploaded image for project: 'ZK'
  1. ZK
  2. ZK-877

NPE in a save only binding.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Normal Normal
    • 6.0.1
    • 6.0.0
    • Databind 2
    • None

      If I remove the errorMessage binding, or add a load binding on value, then this error is not showing.

      <window apply="org.zkoss.bind.BindComposer"
      	viewModel="@id('vm') @init('org.zkoss.zktest.bind.issue.Bx2')"
      	validationMessages="@id('vmsgs')">
      	<vlayout>
      		<hlayout>
      			<label value="@bind(vm.name)" />
      		</hlayout>
      		<hlayout>
      			Name :
      			<textbox value="@save(vm.name) @validator(vm.validator1)" errorMessage="@load(vmsgs[self])" />
      		</hlayout>
      	</vlayout>
      </window>
      
      public class Bx2 {
      
      	String name;
      
      	public Bx2() {
      	}
      
      	public String getName() {
      		return name;
      	}
      
      	public void setName(String name) {
      		this.name = name;
      	}
      
      	public Validator getValidator1(){
      		return new AbstractValidator() {
      			@Override
      			public void validate(ValidationContext ctx) {
      				String name = (String)ctx.getProperties("name")[0].getValue();
      				if(!"Lin".equals(name)){
      					addInvalidMessage(ctx, "the name have to equals to Lin, but is "+name);
      				}
      			}
      		};
      	}
      }
      
      >>java.lang.NullPointerException
      >>	at org.zkoss.bind.tracker.impl.TrackerImpl.addBeanMap(TrackerImpl.java:221)
      >>	at org.zkoss.bind.tracker.impl.TrackerImpl.tieValue(TrackerImpl.java:192)
      >>	at org.zkoss.bind.xel.zel.BindELResolver.tieValue(BindELResolver.java:131)
      >>	at org.zkoss.bind.xel.zel.BindELResolver.getValue(BindELResolver.java:68)
      >>	at org.zkoss.zel.impl.parser.AstIdentifier.getValue(AstIdentifier.java:75)
      >>	at org.zkoss.zel.impl.parser.AstValue.getTarget(AstValue.java:95)
      >>	at org.zkoss.zel.impl.parser.AstValue.getValueReference(AstValue.java:326)
      >>	at org.zkoss.zel.impl.ValueExpressionImpl.getValueReference(ValueExpressionImpl.java:279)
      >>	at org.zkoss.xel.zel.ELXelExpression.getValueReference(ELXelExpression.java:62)
      >>	at org.zkoss.bind.impl.BindEvaluatorXImpl.getValueReference(BindEvaluatorXImpl.java:80)
      >>	at org.zkoss.bind.impl.SavePropertyBindingImpl.getValueReference(SavePropertyBindingImpl.java:129)
      >>	at org.zkoss.bind.impl.SavePropertyBindingImpl.getValidate(SavePropertyBindingImpl.java:141)
      >>	at org.zkoss.bind.impl.PropertyBindingHandler.doValidateSaveEvent(PropertyBindingHandler.java:220)
      >>	at org.zkoss.bind.impl.PropertyBindingHandler.doSaveEvent(PropertyBindingHandler.java:198)
      >>	at org.zkoss.bind.impl.BinderImpl.doSaveEvent(BinderImpl.java:1398)
      >>	at org.zkoss.bind.impl.BinderImpl.access$6(BinderImpl.java:1392)
      >>	at org.zkoss.bind.impl.BinderImpl$CommandEventListener.onEvent(BinderImpl.java:1139)
      >>	at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2741)
      >>	at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2712)
      >>	at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2653)
      >>	at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136)
      >>	at org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1699)
      >>	at org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1484)
      >>	at org.zkoss.zk.ui.impl.UiEngineImpl.execUpdate(UiEngineImpl.java:1201)
      >>	at org.zkoss.zk.au.http.DHtmlUpdateServlet.process(DHtmlUpdateServlet.java:558)
      >>	at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:456)
      >>	at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:464)
      >>	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      >>	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      >>	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
      >>	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
      >>	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      >>	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
      >>	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
      >>	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
      >>	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      >>	at org.mortbay.jetty.Server.handle(Server.java:326)
      >>	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
      >>	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
      >>	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
      >>	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
      >>	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
      >>	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
      >>	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
      

            Unassigned Unassigned
            dennis dennis
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: