wffweb/src/main/java/com/webfirmframework/wffweb/tag/html/AbstractHtml.java
protected void addInnerHtmls(final boolean updateClient,
            final AbstractHtml... innerHtmls) {

        boolean listenerInvoked = false;
        final Lock lock = sharedObject.getLock(ACCESS_OBJECT).writeLock();

        try {
            lock.lock();

            final AbstractHtml[] removedAbstractHtmls = children
                    .toArray(new AbstractHtml[children.size()]);
            children.clear();

            initNewSharedObjectInAllNestedTagsAndSetSuperParentNull(
                    removedAbstractHtmls);

            final InnerHtmlAddListener listener = sharedObject
                    .getInnerHtmlAddListener(ACCESS_OBJECT);

            if (listener != null && updateClient) {

                final InnerHtmlAddListener.Event[] events = new InnerHtmlAddListener.Event[innerHtmls.length];

                int index = 0;

                for (final AbstractHtml innerHtml : innerHtmls) {

                    AbstractHtml previousParentTag = null;

                    if (innerHtml.parent != null
                            && innerHtml.parent.sharedObject == sharedObject) {
                        previousParentTag = innerHtml.parent;
                    }

                    addChild(innerHtml, false);

                    events[index] = new InnerHtmlAddListener.Event(this,
                            innerHtml, previousParentTag);
                    index++;

                }

                listener.innerHtmlsAdded(this, events);
                listenerInvoked = true;
            } else {
                for (final AbstractHtml innerHtml : innerHtmls) {
                    addChild(innerHtml, false);
                }
            }

        } finally {
            lock.unlock();
        }

        if (listenerInvoked) {
            final PushQueue pushQueue = sharedObject
                    .getPushQueue(ACCESS_OBJECT);
            if (pushQueue != null) {
                pushQueue.push();
            }
        }

    }
protected void addInnerHtmls(final boolean updateClient,
            final AbstractHtml... innerHtmls) {

        boolean listenerInvoked = false;
        final Lock lock = sharedObject.getLock(ACCESS_OBJECT).writeLock();

        try {
            lock.lock();

            final AbstractHtml[] removedAbstractHtmls = children
                    .toArray(new AbstractHtml[children.size()]);
            children.clear();

            initNewSharedObjectInAllNestedTagsAndSetSuperParentNull(
                    removedAbstractHtmls);

            final InnerHtmlAddListener listener = sharedObject
                    .getInnerHtmlAddListener(ACCESS_OBJECT);

            if (listener != null && updateClient) {

                final InnerHtmlAddListener.Event[] events = new InnerHtmlAddListener.Event[innerHtmls.length];

                int index = 0;

                for (final AbstractHtml innerHtml : innerHtmls) {

                    AbstractHtml previousParentTag = null;

                    if (innerHtml.parent != null
                            && innerHtml.parent.sharedObject == sharedObject) {
                        previousParentTag = innerHtml.parent;
                    }

                    addChild(innerHtml, false);

                    events[index] = new InnerHtmlAddListener.Event(this,
                            innerHtml, previousParentTag);
                    index++;

                }

                listener.innerHtmlsAdded(this, events);
                listenerInvoked = true;
            } else {
                for (final AbstractHtml innerHtml : innerHtmls) {
                    addChild(innerHtml, false);
                }
            }

        } finally {
            lock.unlock();
        }

        if (listenerInvoked) {
            final PushQueue pushQueue = sharedObject
                    .getPushQueue(ACCESS_OBJECT);
            if (pushQueue != null) {
                pushQueue.push();
            }
        }

    }
Removes all children and adds the given tags as children.

@param updateClient
true to update client browser page if it is
available. The default value is true but it will
be ignored if there is no client browser page.
@param innerHtmls
the inner html tags to add

@since 2.1.15
@author WFF