No, it's not a problem with the tabbed pane -- just the
next thing on my list of problems I'm seeing with MyFaces.

Apparently someone already reported this new issue.

Thanks again for the pane fixes -- I'll let you know if I
find any problems.

-- Jon


On May 25, 2005, at 1:07 PM, Philipp Ahlner wrote:

Hi Jon!

Throws a custom converter the stacktrace? Can you provide a stack trace? I can't imagine a association with the tabbedpanes but I will check this.

2005/5/25, Jon Travis <[EMAIL PROTECTED]>:

I've got it working after moving forms around.

Onto the next problem, which is why the SelectManyListboxes
are having a submitted value of "" and throwing converter
exceptions...

-- Jon


On May 23, 2005, at 10:50 PM, Martin Marinschek wrote:


Strange... I tested with the MyFaces examples, and they worked as
expected.

Did you give the examples a test-ride, do they seem broken as well?

regards,

Martin

On 5/24/05, Jon Travis <[EMAIL PROTECTED]> wrote:


Updated to HEAD to get this patch, but now nearly all my tab
functionality is broken.  I'll have more time to dig into
this later (though I may just revert my update and keep
going for a little while.)  getAsString in my converter
is called with "", for instance, so I'm getting things
like ClassCast exceptions, etc.

-- Jon


On May 22, 2005, at 6:49 AM, Philipp Ahlner (JIRA) wrote:



     [ http://issues.apache.org/jira/browse/MYFACES-214?
page=comments#action_65954 ]

Philipp Ahlner commented on MYFACES-214:
----------------------------------------

Since many components (like HtmlSelectBooleanCheckbox) expects a
boolean value as submitted value (only the decode-method of each
renderer knows what type as submittedValue has to set), I'm tending
to discard the idea to "fake" submittedValue. I can now provide a
patch which hides the not-selected tabs with a <div
style="display:none">-tag. The disadvantage of this solution is
that the content of each tab is transferred to the browser, but
this solution never breaks the jsf-spec.
Please forget all patches I've submitted before :-)


I've changed the HtmlTabbedPaneRenderer.writeTabCell() method. If a
tab is hidden, the components are enclosed in a div tag.

protected void writeTabCell(ResponseWriter writer, FacesContext
facesContext, HtmlPanelTabbedPane tabbedPane,
            int tabCount, int selectedIndex) throws IOException {
        HtmlRendererUtils.writePrettyLineSeparator(facesContext);
        HtmlRendererUtils.writePrettyIndent(facesContext);
        writer.startElement(HTML.TD_ELEM, tabbedPane);
        writer.writeAttribute(HTML.COLSPAN_ATTR, Integer.toString
(tabCount + 1), null);
        writer.writeAttribute(HTML.STYLE_ATTR, TAB_CELL_STYLE +
"background-color:" + tabbedPane.getBgcolor(), null);
        HtmlRendererUtils.renderHTMLAttribute(writer, tabbedPane,
"tabContentStyleClass", HTML.STYLE_CLASS_ATTR);

        int tabIdx = 0;
        List children = tabbedPane.getChildren();
        for (int i = 0, len = children.size(); i < len; i++) {
            UIComponent child = getUIComponent((UIComponent)
children.get(i));
            if (child instanceof HtmlPanelTab) {
                // the inactive tabs are hidden with a div-tag
                if (tabIdx != selectedIndex) {
writer.startElement(HTML.DIV_ELEM, tabbedPane);
                    writer.writeAttribute(HTML.STYLE_ATTR,
"display:none", null);
RendererUtils.renderChild(facesContext, child);
                    writer.endElement(HTML.DIV_ELEM);
                }
                else
                {
RendererUtils.renderChild(facesContext, child);
                }

                tabIdx++;
            } else {
                RendererUtils.renderChild(facesContext, child);
            }
        }

        writer.endElement(HTML.TD_ELEM);
    }


A second change is necessary (we cannot only decode the visible
tab, all components are correctly rendered and must be decoded) in
HtmlPanelTabbedPane.processDecodes:


public void processDecodes(javax.faces.context.FacesContext context)
    {
        if (context == null) throw new NullPointerException
("context");
        decode(context);

        int tabIdx = 0;
        int selectedIndex = getSelectedIndex();

        Iterator it = getFacetsAndChildren();

        while (it.hasNext())
        {
UIComponent childOrFacet = getUIComponent ((UIComponent)
it.next());
            childOrFacet.processDecodes(context);
        }
    }

I've tested my solution with the examples and Firefox 1.0.4
(LinuX). I'll test the solution with a IE in the next days.
I've changed the tabbedPane.jsp in the examples at the 3rd pane as
follows to test my solution:

from:
<h:inputText id="inp3"/>
to:
<h:inputText id="inp3" required="true"/>

I would propose this change in the examples for tests in the future.





TabbedPane : wrong validation behavior
--------------------------------------

         Key: MYFACES-214
         URL: http://issues.apache.org/jira/browse/MYFACES-214
     Project: MyFaces
        Type: Bug
    Versions: 1.0.9 beta
 Environment: MyFaces 1.0.9rc3, Tomcat 5.0.27, j2sdk1.5.0_01
    Reporter: Philipp Ahlner








Requirements for reproduction:
- min. two tabs with min. one required Input-Fields
- a submit button on each tab
- an "<h:messages styleClass="errors" showDetail="true"
showSummary="true"/>"-tag to see all validation errors regardless
which tab is selected
Expected behavior:
- if the submit button is pressed, !both! fields should be
validated regardless which tab is selected
Steps to reproduce:
1. start a new session
2. let the required text fields empty
3. press the submit button in the first tab.
Behavior:
Only the field(s) on the first tab is validated.
The interesting effect:
Select the second tab and press submit. The validation errors on !
both! tab occours. If the tab was
activated at least one time in a new session, all fields were
validated correctly.
Further informations: http://www.mail-archive.com/users%
40myfaces.apache.org/msg03525.html




--
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





















Reply via email to