OK, I stand corrected.  If your still having trouble, try 
accessing programmatic access of the control via 
document.getElementById() .

---- Original message ----
>Date: Fri, 15 Jul 2005 12:02:49 -0500
>From: "CONNER, BRENDAN \(SBCSI\)" <[EMAIL PROTECTED]>  
>Subject: RE: Doing Popup Windows Using JSF  
>To: "MyFaces Discussion" <[email protected]>
>
>OK, I'm just going by the O'Reilly "JavaScript: The 
Definitive Guide"
>book, which says it uses the name.  And I noticed (through 
doing an
>"assert" between each line of the JavaScript) that 
JavaScript recognizes
>the object hidden["hidden:country"], but it does not 
recognize (and
>therefore bombs out when referring to) hidden["hidden:go"].  
I checked
>the rendered HTML, and the rendered anchor does have its id 
set to
>"hidden:go".
>
>If anyone knows another reason why the JavaScript would 
recognize
>hidden["hidden:country"] but not hidden["hidden:go"], but 
then recognize
>hidden[1] when I replace hidden["hidden:go"] to hidden[1], 
I'd be
>interested in an explanation.
>
>But, even when I refer to the control using a numeric index, 
rather than
>using a name, the popup still doesn't work (see problem 2 in 
my original
>message).  Any ideas?  Has anyone used a different design 
for doing a
>JSF popup where the popup shares the same managed bean as 
the base page?
>
>- Brendan
>
>-----Original Message-----
>From: Dennis Byrne [mailto:[EMAIL PROTECTED] 
>Sent: Friday, July 15, 2005 11:48 AM
>To: MyFaces Discussion
>Subject: Re: Doing Popup Windows Using JSF
>
>
>I promise the reason the "JavaScript in index2.jsp does not 
>recognize hidden["hidden:go"]" will have nothing to do with 
>the name attribute.  Client side manipulation of form 
>elements is going to be done with the id attribute.  You 
>might want to explore other explanations.
>
>---- Original message ----
>>Date: Fri, 15 Jul 2005 11:16:41 -0500
>>From: "CONNER, BRENDAN \(SBCSI\)" <[EMAIL PROTECTED]>  
>>Subject: Doing Popup Windows Using JSF  
>>To: "MyFaces Discussion" <[email protected]>
>>
>>I am trying to launch a pop-up window using JSF, where the 
>pop-up window
>>and base window share the same managed bean.  There is an 
>example of how
>>to do this in Sun's Core JavaServer Faces book (Chapter 12) 
>that defines
>>two JSF pages that share a common managed bean:
>>
>>1. index2.jsp
>>2. popup2.jsp
>>
>>When one clicks on a command button in index2.jsp, it 
>executes
>>JavaScript to launch a popup window, and then it submits a 
>form that
>>puts popup2.jsp into the popup window.  However, the code 
>doesn't seem
>>to work.  I list the code at the end of this e-mail.
>>
>>There are two problems with the code:
>>
>>1. From doing a "view source" on the generated HTML, I can 
>see that HTML
>>anchor tag rendered by <h:commandLink> does not specify a 
>name for the
>>control; it just specifies an id for the control.  
>Therefore, the
>>JavaScript in index2.jsp does not recognize hidden
>["hidden:go"] as a
>>valid object, since there is no control with the 
>name "hidden:go"
>>(there's only a control with the *id* of "hidden:go").  I 
>can bypass
>>this problem by referring to this control as hidden[1] 
>instead of
>>hidden["hidden:go"], although that's kind of klugey.  
Still, 
>that
>>eliminates that problem.  The next problem is the real 
>kicker.
>>
>>2. When the popup gets displayed, it is not populated with 
>popup2.jsp.
>>Rather, it is populated with another copy of index2.jsp.  
>Just in case
>>there were errors in index2.jsp, I tried using a blank JSP 
>as the popup
>>JSP, but, again, the popup was populated with index2.jsp 
>rather than the
>>blank JSP.
>>
>>Any ideas about why this doesn't work?  I tried it using 
two 
>different
>>JSF reference implementations (including MyFaces), but I 
get 
>the same
>>errors.
>>
>>
>>
>>index2.jsp:
>>
>><html>
>>   <%@ taglib uri="http://java.sun.com/jsf/core"; prefix="f" 
%
>>
>>   <%@ taglib uri="http://java.sun.com/jsf/html"; prefix="h" 
%
>>
>>
>>   <f:view>
>>      <head>                  
>>         <script language="JavaScript1.1">
>>            function doPopup(source) {
>>               country = source.form[source.form.id 
>+ ":country"];
>>               for (var i = 0; i < country.length; i++) {
>>                  if (country[i].checked) {
>>                     popup = window.open("",
>>                        "popup", 
>>                        "height=300,width=200,toolbar=no,men
u
>bar=no,"
>>                        + "scrollbars=yes");               
>>                     popup.openerFormId = source.form.id;
>>                     popup.focus();
>>                     var hidden = document.forms.hidden;
>>                     hidden["hidden:go"].value = "x"; // 
any 
>value will
>>do
>>                     hidden["hidden:country"].value = 
country
>[i].value;
>>                     hidden.submit();          
>>                  }
>>               }
>>            }               
>>         </script>
>>         <title>A Simple Java Server Faces 
>Application</title>
>>      </head>
>>      <body>
>>         <h:form>
>>            <table>
>>               <tr>
>>                  <td>Country:</td>
>>                  <td>
>>                     <h:selectOneRadio id="country"
>>value="#{bb.country}">
>>                        <f:selectItem itemLabel="USA"  
>itemValue="USA"/>
>>                        <f:selectItem itemLabel="Canada"
>>itemValue="Canada"/>
>>                     </h:selectOneRadio>
>>                  </td>
>>               </tr>             
>>               <tr>
>>                  <td>State/Province:</td>
>>                  <td>
>>                     <h:inputText id="state" value="#
>{bb.state}"/>
>>                  </td>
>>                  <td>
>>                     <h:commandButton value="..."
>>                        onclick="doPopup(this); return 
>false;"/>
>>                  </td>
>>               </tr>
>>            </table>
>>            <p>
>>               <h:commandButton value="Next" action="next"/>
>>            </p>
>>         </h:form>
>>
>>         <%-- This hidden form sends a request to a popup 
>window. --%>
>>         <h:form id="hidden" target="popup">
>>            <h:inputHidden id="country" value="#
>{bb.country}"/>
>>            <h:commandLink id="go" action="showStates" 
>value="">
>>               <f:verbatim/>
>>            </h:commandLink>
>>         </h:form>
>>      </body>
>>   </f:view>
>></html>
>>
>>
>>popup2.jsp:
>>
>><html>
>>   <%@ taglib uri="http://java.sun.com/jsf/core"; prefix="f" 
%
>>
>>   <%@ taglib uri="http://java.sun.com/jsf/html"; prefix="h" 
%
>>
>>
>>   <f:view>
>>      <head>                  
>>         <script language="JavaScript1.1">
>>            function doSave(value) {
>>               var formId = window.openerFormId;
>>               opener.document.forms[formId][formId 
>+ ":state"].value =
>>value;
>>               window.close();
>>            }               
>>         </script>
>>         <title>Select a state/province</title>
>>      </head>
>>      <body>
>>         <h:form>
>>            <h:dataTable value="#{bb.statesForCountry}" 
>var="state">
>>               <h:column>
>>                  <h:outputLink value="#" 
>>                     onclick="doSave('#{state}');">
>>                     <h:outputText value="#{state}" />
>>                  </h:outputLink>
>>               </h:column>
>>            </h:dataTable>
>>         </h:form>
>>      </body>
>>   </f:view>
>></html>
>>
>>
>>
>>faces-config.xml:
>>
>><faces-config>
>>   <navigation-rule>
>>      <navigation-case>
>>         <from-outcome>showStates</from-outcome>
>>         <to-view-id>/popup2.jsp</to-view-id>
>>      </navigation-case>
>>   </navigation-rule>
>>
>>   <managed-bean> 
>>      <managed-bean-name>bb</managed-bean-name>
>>      <managed-bean-class>com.corejsf.BackingBean</managed-
>bean-class> 
>>      <managed-bean-scope>session</managed-bean-scope> 
>>   </managed-bean>
>></faces-config>
>>
>>
>>- Brendan
>>
>Dennis Byrne
Dennis Byrne

Reply via email to