[ http://issues.apache.org/jira/browse/TOMAHAWK-450?page=all ]
Ondrej Svetlik updated TOMAHAWK-450: ------------------------------------ Status: Patch Available (was: Open) > inputHtml component without a form produces NotNullException - it is able to > warn > --------------------------------------------------------------------------------- > > Key: TOMAHAWK-450 > URL: http://issues.apache.org/jira/browse/TOMAHAWK-450 > Project: MyFaces Tomahawk > Type: Bug > Components: Html Editor > Versions: 1.1.3-SNAPSHOT > Environment: Doesn't matter > Reporter: Ondrej Svetlik > > Try to use <t:inputHtml /> outside a form, you'll get this: > java.lang.NullPointerException > at > org.apache.myfaces.custom.inputHtml.InputHtmlRenderer.encodeEndNormalMode(InputHtmlRenderer.java:235) > at > org.apache.myfaces.custom.inputHtml.InputHtmlRenderer.encodeEnd(InputHtmlRenderer.java:87) > at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536) > ... and so on > File affected is: > http://svn.apache.org/repos/asf/myfaces/tomahawk/trunk/core/src/main/java/org/apache/myfaces/custom/inputHtml/InputHtmlRenderer.java > The code is: > private void encodeEndNormalMode(FacesContext context, InputHtml editor) > throws IOException { > String clientId = editor.getClientId(context); > String formId; > { > UIComponent tmpComponent = editor.getParent(); > while(!(tmpComponent instanceof UIForm) ){ > tmpComponent = tmpComponent.getParent(); > } > formId = tmpComponent.getClientId(context); > } > This is a simple fix that would have spared me a few nightmarish hours: > private void encodeEndNormalMode(FacesContext context, InputHtml editor) > throws IOException { > String clientId = editor.getClientId(context); > String formId; > { > UIComponent tmpComponent = editor.getParent(); > while((tmpComponent != null) && !(tmpComponent instanceof UIForm) > ){ > tmpComponent = tmpComponent.getParent(); > } > if (tmpComponent == null) { > log.warn("The inputHtml component must be within a form, giving > up!"); > return; > } > formId = tmpComponent.getClientId(context); > } > Or if you like svn diff better: > --- InputHtmlRenderer.java (revision 409862) > +++ InputHtmlRenderer.java (working copy) > @@ -231,9 +231,13 @@ > String formId; > { > UIComponent tmpComponent = editor.getParent(); > - while(!(tmpComponent instanceof UIForm) ){ > + while((tmpComponent != null) && !(tmpComponent instanceof > UIForm) ){ > tmpComponent = tmpComponent.getParent(); > } > + if (tmpComponent == null) { > + log.warn("The inputHtml component must be within a form, > giving up!");+ return; > + } > formId = tmpComponent.getClientId(context); > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira