I'm trying to create a mixin that on blur will grab the field value and pass it to an event handler followed by a zone refresh. I continue to get a null pointer on the zone refresh, I'm not sure what I'm missing.
tml. <t:textfield t:id="employeeName" value="accrualBalance.employeeTemp" t:mixins="fieldUpdate" t:zone="empIdZone" updateFieldId="empId"/> mixins @Events( {EventConstants.VALIDATE, "fieldUpdated" + " when 'zone' parameter is bound"}) public class FieldUpdate { static final String EVENT_NAME = "fieldupdate"; @Environmental private JavaScriptSupport jsSupport; @InjectContainer private ClientElement element; @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL) private String updateFieldId; @Inject private ComponentResources resources; @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL) private String zone; public void afterRender() { Link link = resources.createEventLink(EVENT_NAME); JSONObject param = new JSONObject(); param.put("id", element.getClientId()); param.put("updateFieldId", updateFieldId); param.put("url", link.toString()); param.put("zone", zone); jsSupport.require("fieldupdate").with(param); } Object onFieldUpdate(@RequestParameter(value = "t:fieldvalue", allowBlank = true) final String fieldvalue) throws ValidationException { CaptureResultCallback<Object> callback = new CaptureResultCallback<>(); this.resources.triggerEvent("fieldUpdated", new Object[]{fieldvalue}, callback); return callback.getResult(); } } .js (function() { define(["t5/core/ajax", "./jquery"], function(ajax, $) { int = function(spec) { var $field = $("#" + spec.id); return $field.bind('blur', function() { return ajax(spec.url, { type: "POST", data: { "t:fieldvalue": $field.val() }, contentType: "application/x-www-form-urlencoded", success: function(response) { return process(response); } }); }); }; return int; }); }).call(this); .java @InjectComponenet private Zone empIdZone; @Inject private AjaxResponseRenderer ajaxResponseRenderer; void onFieldUpdated(String value) { test = "test"; ajaxResponseRenderer.addRender(empIdZone); } exception org.apache.tapestry5.ioc.internal.OperationExceptiontrace - Handling Ajax 'fieldupdate' component event request for timerecords/AccrualBalance:employeename. java.lang.NullPointerException Filter Frames? Stack trace: - org.apache.tapestry5.json.JSONObject.printValue(JSONObject.java:929) - org.apache.tapestry5.json.JSONArray.print(JSONArray.java:464) - org.apache.tapestry5.json.JSONObject.printValue(JSONObject.java:901) - org.apache.tapestry5.json.JSONArray.print(JSONArray.java:464) - org.apache.tapestry5.json.JSONObject.printValue(JSONObject.java:901) - org.apache.tapestry5.json.JSONObject.print(JSONObject.java:872) - org.apache.tapestry5.json.JSONObject.printValue(JSONObject.java:895) - org.apache.tapestry5.json.JSONObject.print(JSONObject.java:872) - org.apache.tapestry5.json.JSONCollection.print(JSONCollection.java:95) - org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl.renderPartialPageMarkup(AjaxPartialResponseRendererImpl.java:93) - org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl.renderPartialPageMarkup(AjaxPartialResponseRendererImpl.java:104) - org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:128) - org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter.handle(AjaxFormUpdateFilter.java:56) - org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) -- George Christman www.CarDaddy.com P.O. Box 735 Johnstown, New York