[ 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