# IndexOf in a template

**URL:** <https://forum.inductiveautomation.com/t/indexof-in-a-template/14439>\
**Category:** Ignition\
**Created:** [June 1, 2017, 2:58pm UTC](https://forum.inductiveautomation.com/t/indexof-in-a-template/14439 "2017-06-01T14:58:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dannymichaud](https://avatars.discourse-cdn.com/v4/letter/d/48db29/32.png) [@Dannymichaud](https://forum.inductiveautomation.com/u/Dannymichaud)\
**Post date:** [June 1, 2017, 2:58pm UTC](https://forum.inductiveautomation.com/t/indexof-in-a-template/14439/1 "2017-06-01T14:58:35Z")

</div>

I’m trying to get the position of a caracter in a sting

substring({Obj\_DI\_Square.DeviceTag::ID},indexOf({Obj\_DI\_Square.DeviceTag::ID}, “.”),len({Obj\_DI\_Square.DeviceTag::ID}))

And the indexOf({Obj\_DI\_Square.DeviceTag::ID}, “.”) is causing a error

java.lang.Exception: Error executing expression binding on  
Obj\_DI\_Square.Obj\_DI\_Square.lab\_objectID.text

Any Idea?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [June 1, 2017, 3:11pm UTC](https://forum.inductiveautomation.com/t/indexof-in-a-template/14439/2 "2017-06-01T15:11:47Z")

</div>

Can you post the full stack trace of the error? On the error dialog, click ‘Full’, then copy the full text and paste it in here.

As a preliminary guess - is the ID tag actually a string, or is it a numeric type (integer, float, etc)?

---

<div class="post-metadata">

**Author:** ![Dannymichaud](https://avatars.discourse-cdn.com/v4/letter/d/48db29/32.png) [@Dannymichaud](https://forum.inductiveautomation.com/u/Dannymichaud)\
**Post date:** [June 1, 2017, 3:14pm UTC](https://forum.inductiveautomation.com/t/indexof-in-a-template/14439/3 "2017-06-01T15:14:42Z")

</div>

java.lang.Exception: Error executing expression binding on  
Obj\_DI\_Square.Obj\_DI\_Square.lab\_objectID.text  
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter.runExpression(ExpressionPropertyAdapter.java:91)  
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter.startup(ExpressionPropertyAdapter.java:112)  
at com.inductiveautomation.factorypmi.application.binding.DefaultInteractionController.setPropertyAdapter(DefaultInteractionController.java:207)  
at com.inductiveautomation.factorypmi.designer.property.configurators.ExpressionConfigurator.bind(ExpressionConfigurator.java:283)  
at com.inductiveautomation.factorypmi.designer.property.configurators.ExpressionConfigurator.tryCommit(ExpressionConfigurator.java:219)  
at com.inductiveautomation.factorypmi.designer.property.configurators.ConfiguratorMultiplexor$EditorParent.tryCommit(ConfiguratorMultiplexor.java:213)  
at com.inductiveautomation.factorypmi.designer.property.configurators.ConfiguratorMultiplexor.tryCommit(ConfiguratorMultiplexor.java:358)  
at com.inductiveautomation.factorypmi.designer.property.configurators.DynamicOptsDialog.doOK(DynamicOptsDialog.java:117)  
at com.inductiveautomation.factorypmi.designer.property.configurators.DynamicOptsDialog.access$000(DynamicOptsDialog.java:43)  
at com.inductiveautomation.factorypmi.designer.property.configurators.DynamicOptsDialog$1.actionPerformed(DynamicOptsDialog.java:83)  
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)  
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)  
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)  
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)  
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)  
at java.awt.Component.processMouseEvent(Unknown Source)  
at javax.swing.JComponent.processMouseEvent(Unknown Source)  
at java.awt.Component.processEvent(Unknown Source)  
at java.awt.Container.processEvent(Unknown Source)  
at java.awt.Component.dispatchEventImpl(Unknown Source)  
at java.awt.Container.dispatchEventImpl(Unknown Source)  
at java.awt.Component.dispatchEvent(Unknown Source)  
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)  
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)  
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)  
at java.awt.Container.dispatchEventImpl(Unknown Source)  
at java.awt.Window.dispatchEventImpl(Unknown Source)  
at java.awt.Component.dispatchEvent(Unknown Source)  
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)  
at java.awt.EventQueue.access$500(Unknown Source)  
at java.awt.EventQueue$3.run(Unknown Source)  
at java.awt.EventQueue$3.run(Unknown Source)  
at java.security.AccessController.doPrivileged(Native Method)  
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
at java.awt.EventQueue$4.run(Unknown Source)  
at java.awt.EventQueue$4.run(Unknown Source)  
at java.security.AccessController.doPrivileged(Native Method)  
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
at java.awt.EventQueue.dispatchEvent(Unknown Source)  
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)  
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)  
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)  
at java.awt.WaitDispatchSupport$2.run(Unknown Source)  
at java.awt.WaitDispatchSupport$4.run(Unknown Source)  
at java.awt.WaitDispatchSupport$4.run(Unknown Source)  
at java.security.AccessController.doPrivileged(Native Method)  
at java.awt.WaitDispatchSupport.enter(Unknown Source)  
at java.awt.Dialog.show(Unknown Source)  
at java.awt.Component.show(Unknown Source)  
at java.awt.Component.setVisible(Unknown Source)  
at java.awt.Window.setVisible(Unknown Source)  
at java.awt.Dialog.setVisible(Unknown Source)  
at com.inductiveautomation.factorypmi.designer.property.configurators.DynamicOptsDialog.showDialog(DynamicOptsDialog.java:185)  
at com.inductiveautomation.factorypmi.designer.model.VisionDesignerImpl.openBindingDialog(VisionDesignerImpl.java:1119)  
at com.inductiveautomation.vision.api.designer.beans.InPlaceEditHandler.onDoubleClick(InPlaceEditHandler.java:58)  
at com.inductiveautomation.factorypmi.designer.workspace.WindowWorkspace.handleDoubleClick(WindowWorkspace.java:813)  
at com.inductiveautomation.ignition.designer.designable.tools.SelectionTool.onDoubleClick(SelectionTool.java:552)  
at com.inductiveautomation.ignition.designer.designable.DesignPanel$ToolMouseListener.onClick(DesignPanel.java:998)  
at com.inductiveautomation.ignition.client.util.gui.CommonMouseAdapter.mouseReleased(CommonMouseAdapter.java:69)  
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)  
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)  
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)  
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)  
at java.awt.Component.processMouseEvent(Unknown Source)  
at javax.swing.JComponent.processMouseEvent(Unknown Source)  
at java.awt.Component.processEvent(Unknown Source)  
at java.awt.Container.processEvent(Unknown Source)  
at java.awt.Component.dispatchEventImpl(Unknown Source)  
at java.awt.Container.dispatchEventImpl(Unknown Source)  
at java.awt.Component.dispatchEvent(Unknown Source)  
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)  
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)  
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)  
at java.awt.Container.dispatchEventImpl(Unknown Source)  
at java.awt.Window.dispatchEventImpl(Unknown Source)  
at java.awt.Component.dispatchEvent(Unknown Source)  
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)  
at java.awt.EventQueue.access$500(Unknown Source)  
at java.awt.EventQueue$3.run(Unknown Source)  
at java.awt.EventQueue$3.run(Unknown Source)  
at java.security.AccessController.doPrivileged(Native Method)  
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
at java.awt.EventQueue$4.run(Unknown Source)  
at java.awt.EventQueue$4.run(Unknown Source)  
at java.security.AccessController.doPrivileged(Native Method)  
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
at java.awt.EventQueue.dispatchEvent(Unknown Source)  
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)  
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)  
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)  
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)  
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)  
at java.awt.EventDispatchThread.run(Unknown Source)  
Caused by: java.lang.NullPointerException  
at com.inductiveautomation.ignition.common.expressions.DefaultFunctionFactory$IndexOfFunction.execute(DefaultFunctionFactory.java:558)  
at com.inductiveautomation.ignition.common.expressions.FunctionExpression.execute(FunctionExpression.java:69)  
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter.runExpression(ExpressionPropertyAdapter.java:82)  
… 94 more

Ignition v7.9.1 (b2017012511)  
Java: Oracle Corporation 1.8.0\_102

---

<div class="post-metadata">

**Author:** ![Dannymichaud](https://avatars.discourse-cdn.com/v4/letter/d/48db29/32.png) [@Dannymichaud](https://forum.inductiveautomation.com/u/Dannymichaud)\
**Post date:** [June 1, 2017, 3:15pm UTC](https://forum.inductiveautomation.com/t/indexof-in-a-template/14439/4 "2017-06-01T15:15:48Z")

</div>

i have been able to get around by  
try(substring({Obj\_DI\_Square.DeviceTag::ID},indexOf({Obj\_DI\_Square.DeviceTag::ID}, “.”)+1,len({Obj\_DI\_Square.DeviceTag::ID})),“ERR”)

But i’m curious why i got that error
