incubator-adffaces-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeremy Sager" <jsa...@chessys.com>
Subject RE: Bug in ADF showOne components
Date Thu, 06 Apr 2006 19:01:55 GMT
Hi guys – 
 
I’m moving this from the myfaces list to the adf faces list because it’s
more appropriate here, and I’m sure Jonas checks both.
 
It turns out that using the correct html and body tags solved our test case,
but it did not solve my production case. I’ve done more testing and further
isolated some issues…
 
Scenario 1:
 
If I assign an id by hand (i.e. having an attribute id=”_123456” or
whatever) to the showOneChoice, it malfunctions in the way I initially
described, with the input automatically reverting to the first item in the
drop down list whenever anything is selected.
 
Scenario 1b:
 
If you remove the facet and just have the showOneChoice inside the panel
page, it misbehaves exactly once and then moves on to Scenario 2.
 
Scenario 2:
 
If you do not assign the id by hand and it is generated automatically, the
input does NOT revert to the first item in the drop down list automatically,
but it does still have a problem. 
 
The correct CoreShowDetailItem does not display... the final visible output
for the test page I am about to show you is always “Showing One” even when
the input box shows “Item Two”.  I included a picture here, it may show up
as an attachment.
 

 
Included here is the exact page from beginning to end that renders Scenario
Two. To get Scenario One, just add id= to the showOneChoice. Below that I
will also include the generated source from the page (it’s not that big) and
also the facelets debug screen. 
 
My Facelets Page:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<afh:html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:c="http://java.sun.com/jstl/core" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:cssi="http://www.chessys.com" 
xmlns:afh="http://xmlns.oracle.com/adf/faces/html" 
xmlns:af="http://xmlns.oracle.com/adf/faces">
<ui:debug>
      <afh:body>
            <af:form>
                  <af:panelPage>
                        <f:facet name="menu1">
                              <af:showOneChoice position="top">
                                    <af:showDetailItem text="Item One">
                                          <af:outputText value="Showing
One"/>
                                    </af:showDetailItem>
                                    <af:showDetailItem text="Item Two">
                                          <af:outputText value="Showing
Two"/>
                                    </af:showDetailItem>
                              </af:showOneChoice>
                        </f:facet>
                  </af:panelPage>
            </af:form>
      </afh:body>
</ui:debug>
</afh:html>
 
 
The results are the same with the ui:debug tag removed.
 
 
Generated Source:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/loose.dtd"><!-- Start: oracle.adf.Html["_id1"]
--><html dir="ltr" lang="en"><script language="javascript"
type="text/javascript">
//<![CDATA[
function faceletsDebug(URL) { day = new Date(); id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "',
'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=8
00,height=600,left = 240,top = 212');"); };var faceletsOrigKeyup =
document.onkeyup; document.onkeyup = function(e) { if (window.event) e =
window.event; if (String.fromCharCode(e.keyCode) == 'D' & e.shiftKey &
e.ctrlKey)
faceletsDebug('/TRecsWebClient/pages/trecs.jsf?facelets.ui.DebugOutput=11443
39607314'); else if (faceletsOrigKeyup) faceletsOrigKeyup(e); };
//]]>
</script>
<!-- Start: oracle.adf.Body["_id3"] -->
  <body onload="_checkLoad(event)"
onunload="_checkUnload(event)"><script>var _AdfWindowOpenError='A popup
window blocker has been detected in your browser. Popup blockers interfere
with the operation of this application. Please disable your popup blocker or
allow popups from this site.';</script><script
src="/TRecsWebClient/adf/jsLibs/Commonea20.js"></script><!-- Start:
oracle.adf.Body["_id3"] -->
    <iframe id="_pprIFrame" name="_pprIFrame" frameborder="0" longdesc="#"
title="" src="about:blank"
style="position:absolute;top:-100px;visibility:hidden" width="0"
height="0"></iframe>
    <!-- Start: oracle.adf.Body["_id3"] --><div id="_pprBlockingDiv"
onclick="return _pprConsumeClick(event);"
style="position:absolute;left:0;top:0;width:0;height:0;cursor:wait;"
onkeydown="return false;" onkeyup="return false;" onmousedown="return
false;" onmouseup="return false;" onkeypress="return
false;"></div><script>var _cachedLibs;</script><a name="top"></a>
    <noscript>This page uses JavaScript and requires a JavaScript enabled
browser.Your browser is not JavaScript enabled.</noscript>
    <!-- Start: oracle.adf.Form["_id4"] -->
    <form id="_id4" name="_id4" style="margin:0px" onkeypress="return
_submitOnEnter(event,'_id4');" method="POST"
action="/TRecsWebClient/pages/trecs.jsf;jsessionid=FF3329E7CD5F9FBA6D10F3687
ECCD300"><!-- Start: oracle.adf.Panel["_id5"] --><a href="#TheContent"
class="x6g">Skip navigation elements to page contents</a><!-- Start:
oracle.adf.Panel["_id5"] --><table cellpadding="0" cellspacing="0"
border="0" width="100%" summary="">
            <tr>
              <td align="right" valign="bottom"><script>function
_socGetSelection(elem){  var selectedElem = document.getElementById(elem);
var selectedOptions = selectedElem.options;  var numOptions =
selectedOptions.length;  for (i = 0; i < numOptions; i++)  {    var
selectOption = selectedOptions.item(i);    var isSelected =
selectOption.selected;    if (isSelected)    {      return selectOption.id;
break;    }  }}</script><!-- Start: oracle.adf.ShowOne["_id6"] --><table
id="_id6" summary="" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td align="center"><table id="_id6_soc_tbl" border="0"
cellspacing="0" cellpadding="0" summary="">
                        <tr>
                          <td align="left" nowrap><span class="xa"><label
for="_id6_soc_tbl_chc"></label></span></td>
                          <!-- Start: oracle.adf.ShowOne["_id6"] -->
                          <td width="12"></td>
                          <!-- Start: oracle.adf.ShowOne["_id6"] -->
                          <td valign="top" nowrap>
                            <select id="_id6_soc_tbl_chc"
name="_id6_soc_tbl_chc" class="x6" onchange="var selectedOption =
_socGetSelection('_id6_soc_tbl_chc');  _submitPartialChange('_id4','1',
{partialTargets:'_id6', event:'show',source:selectedOption});return true;">
                              <option id="_id7" selected>Item One</option>
                              <!-- Start: oracle.adf.ShowOne["_id6"] -->
                              <option id="_id9">Item Two</option>
                            </select>
                          </td>
                        </tr>
                      </table></td>
                  </tr>
                  <!-- Start: oracle.adf.ShowOne["_id6"] -->
                  <tr>
                    <td height="8"></td>
                  </tr>
                  <!-- Start: oracle.adf.ShowOne["_id6"] -->
                  <tr>
                    <td><!-- Start: oracle.adf.ShowDetail["_id7"] --><!--
Start: oracle.adf.Output["_id8"] -->Showing One</td>
                  </tr>
                </table></td>
                
              <td><img src="/TRecsWebClient/adf/images/t.gif" alt=""
width="10" height="1"></td>
            </tr>
              
            <tr>
              <td colspan="2" width="100%"><!-- Start:
oracle.adf.Panel["_id5"] --><table class="x82" cellpadding="0"
cellspacing="0" border="0" summary="" width="100%">
                    <tr>
                      <td height="1"></td>
                    </tr>
                  </table></td>
            </tr>
          </table><!-- Start: oracle.adf.Panel["_id5"]
--><div><div></div><!-- Start: oracle.adf.Panel["_id5"] --><div></div><!--
Start: oracle.adf.Panel["_id5"] --><a id="TheContent" name="TheContent"
class="xj"></a><!-- Start: oracle.adf.Panel["_id5"] --><table width="100%"
summary="" border="0" cellspacing="0" cellpadding="0">
              <tr valign="top">
                <td width="100%"></td>
                <!-- Start: oracle.adf.Panel["_id5"] -->
                <td nowrap></td>
              </tr>
            </table><div></div><!-- Start: oracle.adf.Panel["_id5"]
--><div></div><!-- Start: oracle.adf.Panel["_id5"] --><div>
              <hr class="x4q"><div class="x4s"></div><div
class="x4r"></div><div class="x4t"></div></div><div></div></div><!--
Start:
oracle.adf.Panel["_id5"] --><div class="x4u"><div class="x4v"><span
class="x1a"></span><span class="x1b"></span><span
class="x1c"></span></div></div>
      <input type="hidden" name="oracle.adf.faces.FORM" value="_id4"><span
id="__id4_Postscript"><input type="hidden"
name="oracle.adf.faces.STATE_TOKEN" value="1caffdd1"><script>function
__id4Validator(){return true;}var
_id4_SF={};</script></span><script>_submitFormCheck();</script></form>
  <!-- MYFACES JAVASCRIPT -->
 
<script type="text/javascript"><!--
function getScrolling() {
    var x = 0; var y = 0;
    if (self.pageXOffset || self.pageYOffset) {
        x = self.pageXOffset;
        y = self.pageYOffset;
    } else if ((document.documentElement &&
document.documentElement.scrollLeft)||(document.documentElement &&
document.documentElement.scrollTop)) {
        x = document.documentElement.scrollLeft;
        y = document.documentElement.scrollTop;
    } else if (document.body) {
        x = document.body.scrollLeft;
        y = document.body.scrollTop;
    }
    return x + "," + y;
}
 
//--></script>
 
</body>
  <!-- Created by Oracle ADF Faces (ADF JavaServer Faces API -
ea20-SNAPSHOT/ADF JavaServer Faces Impl - ea20-SNAPSHOT), skin:trecs.basic
(trecsbasic) --></html>
 
 
Facelets Debug Screen:
 
Debug Output
/pages/trecs.xhtml
 
<http://localhost:8080/TRecsWebClient/pages/trecs.jsf?facelets.ui.DebugOutpu
t=1144339607314> +- Component Tree
<UIViewRoot locale="en" renderKitId="oracle.adf.core" rendered="true"
transient="false" viewId="/pages/trecs.xhtml">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<HtmlHtml id="_id1" rendered="true" transient="false">
<UIDebug hotkey="D" id="_id2" rendered="true" transient="true">
<HtmlBody firstClickPassed="false" id="_id3" rendered="true"
transient="false">
<CoreForm id="_id4" rendered="true" submitted="false" transient="false"
usesUpload="false">
<CorePanelPage chromeType="compact" id="_id5"
menu1="CoreShowOneChoice[UINodeFacesBean, id=_id6]" messageType="none"
quickLinksShown="false" rendered="true" transient="false">
menu1
<CoreShowOneChoice accessKey="" alignment="center" id="_id6" position="top"
rendered="true" transient="false">
<CoreShowDetailItem accessKey="" disabled="false" disclosed="false"
id="_id7" immediate="false" rendered="true" text="Item One"
transient="false">
<CoreOutputText escape="true" id="_id8" rendered="true" transient="false"
truncateAt="0" value="Showing One"/>
</CoreShowDetailItem>
<CoreShowDetailItem accessKey="" disabled="false" disclosed="false"
id="_id9" immediate="false" rendered="true" text="Item Two"
transient="false">
<CoreOutputText escape="true" id="_id10" rendered="true" transient="false"
truncateAt="0" value="Showing Two"/>
</CoreShowDetailItem>
</CoreShowOneChoice>
</CorePanelPage>
</CoreForm>
</HtmlBody>
</UIDebug>
</HtmlHtml>
</UIViewRoot>
+
<http://localhost:8080/TRecsWebClient/pages/trecs.jsf?facelets.ui.DebugOutpu
t=1144339607314> - Scoped Variables

Request Parameters

Name
Value

None
 

Request Attributes

Name
Value

None
 

Session Attributes

Name
Value

None
 

Application Attributes

Name
Value

None
Apr 6, 2006 2:52:56 PM - Generated by Facelets
 
 
 
 
Note: The access key attributes show up as a box (unrecognized character),
but I tried assigning access keys just in case and it didn’t make a
difference.
 
 
 
 
 
 
Jeremy Sager
Data Communications Product Manager
Chesapeake System Solutions
410.356.6805 x120
JSager@chessys.com
  _____  

From: Jonas Jacobi [mailto:jonas.jacobi@oracle.com] 
Sent: Wednesday, March 29, 2006 2:43 PM
To: MyFaces Discussion
Subject: Re: Bug in ADF showOne components
 
Yes, you can replace the HTML versions - <af:html>, <af:body> etc - with the
<af:document> tag. 

Jonas

Jeremy Sager wrote: 
Ok excellent. This makes perfect sense… I wasn’t using <afh:body>… I was
just using <body>
 
Didn’t think to include that in my sample stuff because I didn’t realize
that the ADF HTML tags were significant… I guess I for some reason assumed
that they were there for view technology that didn’t pass through HTML.
 
At one point, I was using the <af:document> tag but pulled it out… just for
reference, if I did use the document tag, I could skip the html and body
tags, right?
 
I just want to make sure I’m getting the same functionality.
 
Anyway, I guess the PPR not working properly without the proper tags set up
to allow it makes sense.
 
Jeremy Sager
Data Communications Product Manager
Chesapeake System Solutions
410.356.6805 x120
JSager@chessys.com
  _____  

From: Jonas Jacobi [mailto:jonas.jacobi@oracle.com] 
Sent: Wednesday, March 29, 2006 1:08 PM
To: MyFaces Discussion
Subject: Re: Bug in ADF showOne components
 
Hi Jeremy,

I tried your sample code and it worked fine (with ADF Faces that is shipped
with Oracle's JDeveloper, which is a more recent build of ADF Faces). Anyone
tried the same use case in the ADF Faces Apache drop?

Here is my page source:

  <f:view>
    <afh:html>
      <afh:body>
        <af:form id="someform">
        <af:panelPage id="_adasd">
        <f:facet name="menu1">
        <af:showOneChoice position="top">
        <af:showDetailItem text="Item One" id="_1234321" >
        <af:outputText value="Showing One" id="sdasda"/>
        </af:showDetailItem>
        <af:showDetailItem text="Item Two" id="_12345654321" >
        <af:outputText value="Showing Two" id="asdsadads"/>
        </af:showDetailItem>
        </af:showOneChoice>
        </f:facet>
        </af:panelPage>
        </af:form>
      </afh:body>
    </afh:html>
  </f:view>

I'll do some more testing to see if I can duplicate your issue.

Thanks,
Jonas

Jeremy Sager wrote: 
Ok should I take that to the ADF list only then? Not trying to be a
smartass, just trying to clarify.
 
Jeremy Sager
Data Communications Product Manager
Chesapeake System Solutions
410.356.6805 x120
JSager@chessys.com
 
-----Original Message-----
From: Matthias Wessendorf [mailto:mwessendorf@gmail.com] 
Sent: Wednesday, March 29, 2006 11:48 AM
To: MyFaces Discussion
Subject: Re: Bug in ADF showOne components
 
Hi Jeremy,
 
thanks for your interest in ADF Faces, but please don't do cross postings.
 
Thanks,
Matthias
 
On 3/29/06, Jeremy Sager  <mailto:jsager@chessys.com> <jsager@chessys.com>
wrote:
  
By the way, I did my testing in firefox. In IE, I noticed that sometimes
    
it
  
seems to sit at "loading" for great lengths of time instead of just
reverting.
 
Jeremy Sager
Data Communications Product Manager
Chesapeake System Solutions
410.356.6805 x120
JSager@chessys.com
 
-----Original Message-----
From: Jeremy Sager [mailto:jsager@chessys.com]
Sent: Wednesday, March 29, 2006 11:45 AM
To: 'MyFaces Discussion'
Cc: adffaces-user@incubator.apache.org
Subject: Bug in ADF showOne components
 
Hi guys -
 
I've researched this pretty thoroughly and I don't think this is a mistake
on my part.
 
I'm worried that the general issue I'm demonstrating may extend beyond
showOne items, but they're all I've tested so far. The following bug is
demonstrated with showOneChoice, but I know for certain that it is also a
problem with showOneTab. I haven't tested it with other showOne
    
components,
  
but am guessing we'll get similar results.
 
Basically, if you have a showOne component inside a form AND inside a
    
facet,
  
it stops working properly. When you select an item from the showOne, it
automatically reverts back to the first item in the list no matter what
    
you
  
selected.
 
I am certain this has nothing to do with the outputText component inside
    
the
  
showDetailItem. I originally had different components in there, and only
substituted in the outputText because it's a simple small component that
makes testing easy.
 
Here is a sample setup:
 
<af:form>
      <af:panelBorder>
      <f:facet name="right">
            <af:showOneChoice position="top">
                  <af:showDetailItem text="Item One" id="_1234321" >
                        <af:outputText value="Showing One"/>
                  </af:showDetailItem>
                  <af:showDetailItem text="Item Two" id="_12345654321" >
                        <af:outputText value="Showing Two"/>
                  </af:showDetailItem>
            </af:showOneChoice>
      <f:facet>
      </af:panelBorder>
</af:form>
 
If you replace the panelBorder with a panelPage (i.e. another component
    
with
  
a facet), you get the same behavior.
 
<af:form id="someform">
<af:panelPage id="_adasd">
<f:facet name="menu1">
<af:showOneChoice position="top">
<af:showDetailItem text="Item One" id="_1234321" >
<af:outputText value="Showing One" id="sdasda"/>
</af:showDetailItem>
<af:showDetailItem text="Item Two" id="_12345654321" >
<af:outputText value="Showing Two" id="asdsadads"/>
</af:showDetailItem>
</af:showOneChoice>
</f:facet>
</af:panelPage>
</af:form>
 
 
Remove the form, and everything works fine:
 
<af:panelBorder>
<f:facet name="right">
      <af:showOneChoice position="top">
      <af:showDetailItem text="Item One" id="_1234321" >
            <af:outputText value="Showing One"/>
      </af:showDetailItem>
      <af:showDetailItem text="Item Two" id="_12345654321" >
            <af:outputText value="Showing Two"/>
      </af:showDetailItem>
      <af:showOneChoice>
      </f:facet>
</af:panelBorder>
 
 
Keep the form, but pull the showOne item OUT of the facet, everything
    
works
  
fine:
 
 
<af:form id="someform">
<af:panelPage id="_adasd">
<f:facet name="menu1">
<af:outputText value="Facet requires a tag" id="asdsadaddsadsas"/>
</f:facet>
<af:showOneChoice position="top">
<af:showDetailItem text="Item One" id="_1234321" >
<af:outputText value="Showing One" id="sdasda"/>
</af:showDetailItem>
<af:showDetailItem text="Item Two" id="_12345654321" >
<af:outputText value="Showing Two" id="asdsadads"/>
<af:showDetailItem>
</af:showOneChoice>
</af:panelPage>
</af:form>
 
It does not matter if the showOne item is a top level child of the facet
    
or
  
not. This also fails:
 
<af:form id="someform">
<af:panelPage id="_adasd">
<f:facet name="menu1">
<af:panelBox id="box" text="header" background="medium">
<af:showOneChoice position="top">
<af:showDetailItem text="Item One" id="_1234321" >
<af:outputText value="Showing One" id="sdasda"/>
</af:showDetailItem>
<af:showDetailItem text="Item Two" id="_12345654321" >
<af:outputText value="Showing Two" id="asdsadads"/>
</af:showDetailItem>
</af:showOneChoice>
</af:panelBox>
</f:facet>
</af:panelPage>
</af:form>
 
I'm going to do more testing to determine if there are other types of
components that misfire inside a facet inside a form, and I'll let you
    
guys
  
know. In the meantime, hopefully the ADF guys who know the code can spot
    
the
  
problem.
 
I don't think this is relevant to the issue, but in the interests of full
disclosure I am using facelets for my view handler.
 
I am on the nightlies for facelets, MyFaces, and ADF Faces as of Monday
3/27. however I know for certain that this bug was around in earlier
versions, because I upgraded in an attempt to fix the bug, and was
previously using MyFaces 1.1.1, the original ADF Faces drop, and whatever
version of facelets was out there in December '05.
 
I'm copying this to the myfaces list because the adffaces list just came
    
up
  
yesterday and people who have something to add may not have signed up yet.
 
Jeremy Sager
Data Communications Product Manager
Chesapeake System Solutions
410.356.6805 x120
JSager@chessys.com
 
 
    
 
 
--
Matthias Wessendorf
Zülpicher Wall 12, 239
50674 Köln
http://www.wessendorf.net
mwessendorf-at-gmail-dot-com
 
  
 
-- 
Author: Pro JSF and Ajax:
<http://apress.com/book/bookDisplay.html?bID=10044>  Building Rich Internet
Components
Blog: http://www.orablogs.com/jjacobi 
 
 
-- 
Author: Pro JSF and Ajax:
<http://apress.com/book/bookDisplay.html?bID=10044>  Building Rich Internet
Components
Blog: http://www.orablogs.com/jjacobi 
 

Mime
  • Unnamed multipart/related (inline, None, 0 bytes)
View raw message