incubator-adffaces-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Winer" <awi...@gmail.com>
Subject Re: Keeping selectOneChoice selection
Date Tue, 10 Apr 2007 16:54:08 GMT
It is true that if you have a scenario where "rendered" is different
when rendering and on the next, postback request, things will
go badly.

pageFlowScope is one way around that.  However, a much simpler
approach is to just use setRendered() on the component to toggle
"rendered".  JSF state saving will automatically preserve that
change in "rendered".  Since you already have a "binding" on
that selectOneChoice, then just have:
  getAnoPnifa().setRendered(false);
... if you want to hide the selectOneChoice.

-- Adam



On 4/10/07, William Hoover <whoover@nemours.org> wrote:
> Using the rendered feature is not very useful when doing post backs to the same page. If they are not rendered on the page and then rendered on the second response they break. This is because they were not processed correctly in the ui tree that is maintained by jsf. If you need to conditionally render EditableValueHolders that need post back I would try placing them in Trinidads "pageFlowScope" and see if that works for you.
>
> -----Original Message-----
> From: Francisco Passos [mailto:francisco.passos@opensoft.pt]
> Sent: Tuesday, April 10, 2007 5:41 AM
> To: adffaces-user@incubator.apache.org
> Subject: RE: Keeping selectOneChoice selection
>
>
> Hello once again and thank you for your hints.
>
> I've just tried removing the rendered feature on the selectOneChoice and
> surprisingly it now works!
>
> Why is this so? Is it possible to have these two features at the same time?
>
> Francisco Passos
>
> > It seems like this should work, but just as a process of elimination, have
> > you tried removing the rendered feature? Does your "anoPnifaItems" have a
> > blank entry in the list? I noticed that the infamous blank option appears
> > in your list indicating the "SimpleSelectOneRenderer" was unable to set
> > the value. Also, try using strings for your selection item values. When
> > the component evaluates what index was selected it looks at
> > value.equals(item.getValue()) if the class types of these values do not
> > match it will be unable to find the selected index. Also, have you checked
> > the components value and submitted values to see what they are at runtime?
> >
> > -----Original Message-----
> > From: Francisco Passos [mailto:francisco.passos@opensoft.pt]
> > Sent: Monday, April 09, 2007 1:26 PM
> > To: adffaces-user@incubator.apache.org
> > Subject: RE: Keeping selectOneChoice selection
> >
> >
> >
> > Sure, thank you.
> >
> > I should point out I'm using facelets. Furthermore, some variables are in
> > portuguese, sorry for that. If you find there is something I am doing in a
> > non-standard fashion, please feel free to advise me, since I've only just
> > scraped the surface of JSF and Trinidad.
> >
> > Here's the code then:
> >
> >
> > ------ PAGE CODE: fichaProdConsulta.xhtml ------
> >
> > <?xml version='1.0' encoding='windows-1252'?>
> > <trh:html xmlns="http://www.w3.org/1999/xhtml"
> >       xmlns:f="http://java.sun.com/jsf/core"
> >       xmlns:h="http://java.sun.com/jsf/html"
> >       xmlns:tr="http://myfaces.apache.org/trinidad"
> >       xmlns:trh="http://myfaces.apache.org/trinidad/html"
> >       xmlns:ui="http://java.sun.com/jsf/facelets"
> >       xmlns:c="http://java.sun.com/jstl/core"
> >       xmlns:t="http://myfaces.apache.org/tomahawk" id="htmlid">
> >
> > <trh:head id="headid"/>
> > <trh:body id="bodyid">
> >       <f:view>
> >               <ui:composition template="/templates/mainTemplate.xhtml">
> >                       <ui:define name="PageContent">
> >
> >
> >                               <h3 style="stph3"><tr:outputText value="Ficha de Produto" /></h3>
> >                               <h4 style="stph4"><tr:outputText value="[ Importação ]"
> > styleClass="stph4"/></h4>
> >
> >                               <div align="center">
> >                                       <tr:panelGroupLayout partialTriggers="correntePnifa"
> > layout="vertical" styleClass="stptable" inlineStyle="width:300px">
> >                                               <tr:panelHorizontalLayout styleClass="invisibleTable"
> > inlineStyle="text-align: center;" partialTriggers="correntePnifa">
> >                                                       <tr:selectOneRadio id="correntePnifa"
> >                                                               autoSubmit="true" binding="#{fichaBean.tipoPesquisa}"
> >                                                               styleClass="stpinputText" layout="horizontal"
> > value="#{fichaBean.tipoPesquisaSeleccionada}"
> >                                                               valueChangeListener="#{fichaBean.updatePnifaVisibility}">
> >                                                               <f:selectItem itemValue="CORRENTE" itemLabel="Corrente" />
> >                                                               <f:selectItem itemValue="PNIFA" itemLabel="PNIFA" />
> >                                                       </tr:selectOneRadio>
> >                                               </tr:panelHorizontalLayout>
> >                                               <tr:panelHorizontalLayout inlineStyle="width: 200px;">
> >                                                       <hr style="height:1px;" />
> >                                               </tr:panelHorizontalLayout>
> >                                               <tr:panelHorizontalLayout>
> >                                                       <tr:outputText value="Código Pautal" styleClass="titleCell" />
> >                                                       <tr:outputText value="Ano" styleClass="titleCell"
> > rendered="#{fichaBean.pnifaVisible}" />
> >                                                       <tr:inputText styleClass="fCodPautal" maximumLength="22"
> > id="codPautal" binding="#{fichaBean.codPautal}"
> > value="#{fichaBean.codigoPautal}" />
> >                                                       <tr:selectOneChoice id="selectAnoPnifa"
> > binding="#{fichaBean.anoPnifa}"
> > value="#{fichaBean.anoPnifaSeleccionado}" styleClass="stpselect"
> > rendered="#{fichaBean.pnifaVisible}" valuePassThru="true">
> >                                                               <f:selectItems id="pnifaItems" value="#{fichaBean.anoPnifaItems}"
> > />
> >                                                       </tr:selectOneChoice>
> >                                               </tr:panelHorizontalLayout>
> >                                               <tr:spacer height="15px"/>
> >                                       </tr:panelGroupLayout>
> >                                       <tr:commandButton text="Consultar" styleClass="fButton"
> > action="consultarFichaImport" />
> >                                       <tr:commandButton text="Ficar" styleClass="fButton"
> > action="#{fichaBean.valorAlterado}"/>
> >
> >                               </div>
> >                       </ui:define>
> >               </ui:composition>
> >       </f:view>
> > </trh:body>
> > </trh:html>
> >
> >
> >
> > ------ TEMPLATE CODE: mainTemplate.xhtml ------
> >
> > <?xml version='1.0' encoding='windows-1252'?>
> > <trh:html xmlns="http://www.w3.org/1999/xhtml"
> >       xmlns:trh="http://myfaces.apache.org/trinidad/html"
> >       xmlns:tr="http://myfaces.apache.org/trinidad"
> >       xmlns:f="http://java.sun.com/jsf/core"
> >       xmlns:h="http://java.sun.com/jsf/html"
> >       xmlns:ui="http://java.sun.com/jsf/facelets" id="mainTemplatehtml1">
> >
> > <trh:head id="mainTemplatehead1">
> >       <link href="/stp/resources/css/stp.css" rel="stylesheet" media="screen"/>
> >       <link href="/stp/resources/css/calendar.css" rel="stylesheet"
> > media="screen"/>
> > </trh:head>
> >
> > <trh:body id="mainTemplatebody1" styleClass="stpbody">
> >       <f:view>
> >               <f:loadBundle
> >                       basename="pt.opensoft.messageResource.MessageResources" var="msg" />
> >               <tr:form id="mainTemplateform1">
> >                       <tr:panelPage id="mainTemplatepanelPage1">
> >                               <f:facet name="messages">
> >                                       <tr:messages id="mainMessagesID" text="Mensagens" rendered="true">
> >
> >                                       </tr:messages>
> >                               </f:facet>
> >                               <f:facet name="menuGlobal">
> >                                       <tr:navigationPane id="mainTemplatemenuButtons1">
> >                                               <tr:panelHorizontalLayout>
> >                                                       <tr:commandLink text="#{msg.label_logout}"
> >                                                               id="mainTemplatecommandLink1" action="#{logoutBean.actionSair}"
> >                                                               immediate="true" />
> >                                               </tr:panelHorizontalLayout>
> >                                       </tr:navigationPane>
> >                               </f:facet>
> >
> >                               <f:facet name="branding">
> >                                       <tr:image source="#{msg.logo_source}"
> >                                               id="mainTemplateobjectImage1" />
> >                               </f:facet>
> >
> >
> >                               <f:facet name="appCopyright">
> >                                       <tr:outputFormatted value="#{msg.label_copyright}"
> >                                               id="mainTemplateoutputFormatted1" />
> >                               </f:facet>
> >
> >
> >                               <ui:insert name="menuOpcoes">
> >                                       <ui:include src="../pages/menu.xhtml" />
> >                               </ui:insert>
> >
> >
> >                               <ui:insert name="PageContent" />
> >
> >                       </tr:panelPage>
> >               </tr:form>
> >       </f:view>
> > </trh:body>
> >
> > </trh:html>
> >
> >
> >
> > ------ RENDERED HTML (first access )-------
> >
> > <?xml version='1.0' encoding='windows-1252'?>
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
> > "http://www.w3.org/TR/html4/loose.dtd"><!--Start:
> > org.apache.myfaces.trinidad.Html["mainTemplatehtml1"]--><html dir="ltr"
> > lang="en"><!--Start:
> > org.apache.myfaces.trinidad.Head["mainTemplatehead1"]-->
> >   <head id="mainTemplatehead1">
> >     <meta name="generator" content="Apache Trinidad">
> >
> >     <link rel="stylesheet" charset="UTF-8" type="text/css"
> > href="/stp/adf/styles/cache/simple-desktop-1_0_0-incubating-en-gecko.css"><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="/stp/adf/jsLibs/Common11-m7.js"></script><script>_defaultTZ()</script>
> >
> >     <link href="/stp/resources/css/stp.css" rel="stylesheet"
> > media="screen">
> >
> >
> >     <link href="/stp/resources/css/calendar.css" rel="stylesheet"
> > media="screen">
> >   </head>
> >
> >   <!--Start: org.apache.myfaces.trinidad.Body["mainTemplatebody1"]-->
> >   <body id="mainTemplatebody1" onload="_checkLoad()"
> > onunload="_checkUnload(event)" class="stpbody">
> >     <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:
> > org.apache.myfaces.trinidad.Body["mainTemplatebody1"]--><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><!--Start:
> > org.apache.myfaces.trinidad.Form["mainTemplateform1"]-->
> >     <form id="mainTemplateform1" name="mainTemplateform1"
> > style="margin:0px" method="POST" onkeypress="return
> > _submitOnEnter(event,'mainTemplateform1');"
> > action="/stp/pages/ficha/fichaProdConsulta.jsf?_afPfm=-20ad0192"><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><span
> > id="mainTemplatepanelPage1"><table cellpadding="0" cellspacing="0"
> > border="0" width="100%"><tr>
> >               <td nowrap valign="top"><table cellpadding="0"
> > cellspacing="2" border="0" width="1%"><tr>
> >                     <td nowrap><!--Start:
> > org.apache.myfaces.trinidad.Object["mainTemplateobjectImage1"]--><img
> > id="mainTemplateobjectImage1"
> > name="mainTemplateobjectImage1"
> > src="/stp/resources/img/opensoft_logo.jpg"></td>
> >                   </tr><tr>
> >
> >                     <td valign="top" nowrap></td>
> >                   </tr></table></td>
> >             </tr><tr>
> >               <td width="100%"><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><table
> > class="xc5" cellpadding="0" cellspacing="0" border="0"
> > width="100%"><tr>
> >                       <td height="1"></td>
> >                     </tr></table></td>
> >             </tr></table><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><div><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><!--Start:
> > org.apache.myfaces.trinidad.Messages["mainMessagesID"]--><span
> > id="mainMessagesID"></span><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><table
> > width="100%" border="0" cellspacing="0" cellpadding="0"><tr
> > valign="top">
> >                 <td width="100%"></td>
> >               </tr></table><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><?xml
> > version='1.0' encoding='windows-1252'?>
> >
> > <div></div><!--Start: org.apache.myfaces.trinidad.Panel["j_id4"]--><table
> > cellpadding="0" cellspacing="0" border="0" id="j_id4"><tr>
> >                   <td><!--Start:
> > org.apache.myfaces.trinidad.Command["j_id5"]--><a
> > id="j_id5" name="j_id5"
> > onclick="submitForm('mainTemplateform1',1,{source:'j_id5'});return
> > false;" class="xi" href="#">Ficha Produto
> > Importa&ccedil;&atilde;o</a></td>
> >                 </tr></table><div></div>
> >
> >
> >
> >               <h3 style="stph3"><div></div><!--Start:
> > org.apache.myfaces.trinidad.Output["j_id7"]--><span
> > id="j_id7">Ficha de Produto</span><div></div></h3>
> >
> >
> >               <h4 style="stph4"><div></div><!--Start:
> > org.apache.myfaces.trinidad.Output["j_id9"]--><span
> > id="j_id9" class="stph4">[ Importa&ccedil;&atilde;o
> > ]</span><div></div></h4>
> >
> >
> >                               <div align="center"><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["j_id11"]--><div id="j_id11"
> > class="stptable" style="width:300px"><!--Start:
> > org.apache.myfaces.trinidad.Panel["j_id12"]--><table cellpadding="0"
> > cellspacing="0" border="0" id="j_id12" class="invisibleTable"
> > style="text-align: center;"><tr>
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.SelectOne["correntePnifa"]--><table
> > id="correntePnifa__xc_" class="stpinputText x1l"
> > cellpadding="0" cellspacing="0" border="0"><tr>
> >
> >                             <td class="x14" nowrap></td>
> >
> >                             <td valign="top" nowrap
> > class="AFContentCell"><script>var
> > _pprUpdateMode=false;function
> > _adfspu(f,v,e,s,o){_pprUpdateMode=true;if(!o)o=new
> > Object();o.event=(e)?e:'update';if(s)o.source=s;_submitPartialChange(f,v,o);}</script><!--Start:
> > org.apache.myfaces.trinidad.SelectOne["correntePnifa"]--><span
> > id="correntePnifa" class="x21">
> >                                 <input type="radio" name="correntePnifa"
> > id="correntePnifa:_0" value="0"
> > onclick="_adfspu('mainTemplateform1',1,'correntePnifa','correntePnifa');return
> > true;"><label
> > for="correntePnifa:_0">Corrente</label>
> >                                 <input type="radio" name="correntePnifa"
> > id="correntePnifa:_1" value="1"
> > onclick="_adfspu('mainTemplateform1',1,'correntePnifa','correntePnifa');return
> > true;"><label
> > for="correntePnifa:_1">PNIFA</label></span></td>
> >                           </tr></table></td>
> >                     </tr></table><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["j_id15"]--><table
> > cellpadding="0" cellspacing="0" border="0" id="j_id15"
> > style="width: 200px;"><tr>
> >                       <td>
> >
> >
> >                         <hr style="height:1px;">
> >                       </td>
> >                     </tr></table><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["j_id17"]--><table
> > cellpadding="0" cellspacing="0" border="0"
> > id="j_id17"><tr>
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.Output["j_id18"]--><span
> > id="j_id18" class="titleCell">C&oacute;digo
> > Pautal</span></td>
> >
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.Output["j_id19"]--><span
> > id="j_id19" class="titleCell">Ano</span></td>
> >
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.Input["codPautal"]--><table
> > id="codPautal__xc_" class="fCodPautal x1e"
> > cellpadding="0" cellspacing="0" border="0"><tr>
> >                             <td class="xu" nowrap></td>
> >
> >
> >                             <td valign="top" nowrap
> > class="AFContentCell"><!--Start:
> > org.apache.myfaces.trinidad.Input["codPautal"]-->
> >                               <input id="codPautal" name="codPautal"
> > class="x1p" size="30" maxlength="22"
> > type="text">
> >                             </td>
> >                           </tr></table></td>
> >
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.SelectOne["selectAnoPnifa"]--><table
> > id="selectAnoPnifa__xc_" class="stpselect x1j"
> > cellpadding="0" cellspacing="0" border="0"><tr>
> >                             <td class="x12" nowrap></td>
> >
> >                             <td valign="top" nowrap
> > class="AFContentCell"><script>var
> > _locale='en';var
> > _tLocale='en';</script><script
> > src="/stp/adf/jsLibs/resources/LocaleElements_en11-m7.js"></script><!--Start:
> > org.apache.myfaces.trinidad.SelectOne["selectAnoPnifa"]-->
> >                               <select id="selectAnoPnifa"
> > name="selectAnoPnifa" class="x1z">
> >
> >                                 <option value=""></option>
> >
> >                                 <option value="2006">2006</option>
> >
> >                                 <option value="2005">2005</option>
> >
> >                                 <option value="2004">2004</option>
> >                               </select>
> >                             </td>
> >                           </tr></table></td>
> >
> >                     </tr></table><div></div><!--Start:
> > org.apache.myfaces.trinidad.Object["j_id20"]--><div
> > id="j_id20"
> > style="margin-top:15px"></div></div><div></div><!--Start:
> > org.apache.myfaces.trinidad.Command["j_id21"]-->
> >                 <button id="j_id21" name="j_id21" type="button"
> > onclick="submitForm('mainTemplateform1',1,{source:'j_id21'});return
> > false;" class="fButton
> > x6l">Consultar</button><div></div><!--Start:
> > org.apache.myfaces.trinidad.Command["j_id22"]-->
> >                 <button id="j_id22" name="j_id22" type="button"
> > onclick="submitForm('mainTemplateform1',1,{source:'j_id22'});return
> > false;" class="fButton x6l">Ficar</button><div></div>
> >
> >                               </div><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><div>
> >               <hr class="x98"><div class="x9a"></div><div
> > class="x99"></div><div
> > class="x9b"></div></div><div></div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><div
> > class="x9c"><div class="x9d"><span class="x5a"><!--Start:
> > org.apache.myfaces.trinidad.Output["mainTemplateoutputFormatted1"]--><span
> > id="mainTemplateoutputFormatted1">(@VERSION@)
> > @VERSION-DATE@</span></span><span class="x5b"></span><span
> > class="x5c"></span></div></div></span>
> >       <input type="hidden" name="org.apache.myfaces.trinidad.faces.FORM"
> > value="mainTemplateform1"><span
> > id="_mainTemplateform1_Postscript"><input type="hidden"
> > name="org.apache.myfaces.trinidad.faces.STATE" value="!-20ad0192">
> >         <input type="hidden" name="source"><script>var
> > _resetmainTemplateform1Names=["source"];</script><script>var
> > _mainTemplateform1_Validations=['new
> > TrIntegerConverter(null,null,0,2147483647,-2147483648)'];function
> > _mainTemplateform1Validator(f,s){var fl =
> > _multiValidate(f,s,["selectAnoPnifa",0,,0,[]],0);if(fl.length>0){_validationAlert('Form
> > validation failures:'+fl);return false;}else{return true;}}var
> > _mainTemplateform1_Formats=['{0} - {1}'];var
> > mainTemplateform1_SF={};</script></span><script>_submitFormCheck();</script></form>
> >
> >   <!-- MYFACES JAVASCRIPT -->
> >
> > </body>
> >   <!--Created by Apache Trinidad (Apache Trinidad API -
> > 1.0.0-incubating/Apache Trinidad Impl - 1.0.0-incubating),
> > Accessibility:disabled, skin:simple.desktop (simple)--></html>
> >
> >
> >
> >
> > ------- RENDERED HTML (postback in said conditions) -------
> >
> > <?xml version='1.0' encoding='windows-1252'?>
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
> > "http://www.w3.org/TR/html4/loose.dtd"><!--Start:
> > org.apache.myfaces.trinidad.Html["mainTemplatehtml1"]--><html dir="ltr"
> > lang="en"><!--Start:
> > org.apache.myfaces.trinidad.Head["mainTemplatehead1"]-->
> >   <head id="mainTemplatehead1">
> >     <meta name="generator" content="Apache Trinidad">
> >
> >     <link rel="stylesheet" charset="UTF-8" type="text/css"
> > href="/stp/adf/styles/cache/simple-desktop-1_0_0-incubating-en-gecko.css"><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="/stp/adf/jsLibs/Common11-m7.js"></script><script>_defaultTZ()</script>
> >
> >     <link href="/stp/resources/css/stp.css" rel="stylesheet"
> > media="screen">
> >
> >
> >     <link href="/stp/resources/css/calendar.css" rel="stylesheet"
> > media="screen">
> >
> >
> >     <link href="/stp/resources/css/stp.css" rel="stylesheet"
> > media="screen">
> >
> >
> >
> >     <link href="/stp/resources/css/calendar.css" rel="stylesheet"
> > media="screen">
> >
> >
> >     <link href="/stp/resources/css/stp.css" rel="stylesheet"
> > media="screen">
> >
> >
> >     <link href="/stp/resources/css/calendar.css" rel="stylesheet"
> > media="screen">
> >   </head>
> >   <!--Start: org.apache.myfaces.trinidad.Body["mainTemplatebody1"]-->
> >   <body id="mainTemplatebody1" onload="_checkLoad()"
> > onunload="_checkUnload(event)" class="stpbody">
> >     <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:
> > org.apache.myfaces.trinidad.Body["mainTemplatebody1"]--><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><!--Start:
> > org.apache.myfaces.trinidad.Form["mainTemplateform1"]-->
> >
> >     <form id="mainTemplateform1" name="mainTemplateform1"
> > style="margin:0px" method="POST" onkeypress="return
> > _submitOnEnter(event,'mainTemplateform1');"
> > action="/stp/pages/ficha/fichaProdConsulta.jsf?_afPfm=-20ad0190"><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><span
> > id="mainTemplatepanelPage1"><table cellpadding="0" cellspacing="0"
> > border="0" width="100%"><tr>
> >               <td nowrap valign="top"><table cellpadding="0"
> > cellspacing="2" border="0" width="1%"><tr>
> >                     <td nowrap><!--Start:
> > org.apache.myfaces.trinidad.Object["mainTemplateobjectImage1"]--><img
> > id="mainTemplateobjectImage1"
> > name="mainTemplateobjectImage1"
> > src="/stp/resources/img/opensoft_logo.jpg"></td>
> >                   </tr><tr>
> >                     <td valign="top" nowrap></td>
> >                   </tr></table></td>
> >             </tr><tr>
> >               <td width="100%"><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><table
> > class="xc5" cellpadding="0" cellspacing="0" border="0"
> > width="100%"><tr>
> >                       <td height="1"></td>
> >
> >                     </tr></table></td>
> >             </tr></table><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><div><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><!--Start:
> > org.apache.myfaces.trinidad.Messages["mainMessagesID"]--><span
> > id="mainMessagesID"></span><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><table
> > width="100%" border="0" cellspacing="0" cellpadding="0"><tr
> > valign="top">
> >                 <td width="100%"></td>
> >               </tr></table><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><?xml
> > version='1.0' encoding='windows-1252'?>
> > <div></div>
> >
> >
> >
> >               <h3 style="stph3"><div></div></h3>
> >
> >
> >               <h4 style="stph4"><div></div></h4>
> >
> >
> >                               <div align="center"><div></div>
> >
> >                               </div><div></div><?xml version='1.0' encoding='windows-1252'?>
> >
> > <div></div>
> >
> >
> >
> >               <h3 style="stph3"><div></div></h3>
> >
> >
> >               <h4 style="stph4"><div></div></h4>
> >
> >
> >                               <div align="center"><div></div>
> >
> >                               </div><div></div><?xml version='1.0' encoding='windows-1252'?>
> > <div></div><!--Start: org.apache.myfaces.trinidad.Panel["j_id4"]--><table
> > cellpadding="0" cellspacing="0" border="0" id="j_id4"><tr>
> >                   <td><!--Start:
> > org.apache.myfaces.trinidad.Command["j_id5"]--><a
> > id="j_id5" name="j_id5"
> > onclick="submitForm('mainTemplateform1',1,{source:'j_id5'});return
> > false;" class="xi" href="#">Ficha Produto
> > Importa&ccedil;&atilde;o</a></td>
> >                 </tr></table><div></div>
> >
> >
> >
> >               <h3 style="stph3"><div></div><!--Start:
> > org.apache.myfaces.trinidad.Output["j_id7"]--><span
> > id="j_id7">Ficha de Produto</span><div></div></h3>
> >
> >
> >
> >               <h4 style="stph4"><div></div><!--Start:
> > org.apache.myfaces.trinidad.Output["j_id9"]--><span
> > id="j_id9" class="stph4">[ Importa&ccedil;&atilde;o
> > ]</span><div></div></h4>
> >
> >
> >                               <div align="center"><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["j_id11"]--><div id="j_id11"
> > class="stptable" style="width:300px"><!--Start:
> > org.apache.myfaces.trinidad.Panel["j_id12"]--><table cellpadding="0"
> > cellspacing="0" border="0" id="j_id12" class="invisibleTable"
> > style="text-align: center;"><tr>
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.SelectOne["correntePnifa"]--><table
> > id="correntePnifa__xc_" class="stpinputText x1l"
> > cellpadding="0" cellspacing="0" border="0"><tr>
> >                             <td class="x14" nowrap></td>
> >
> >                             <td valign="top" nowrap
> > class="AFContentCell"><script>var
> > _pprUpdateMode=false;function
> > _adfspu(f,v,e,s,o){_pprUpdateMode=true;if(!o)o=new
> > Object();o.event=(e)?e:'update';if(s)o.source=s;_submitPartialChange(f,v,o);}</script><!--Start:
> > org.apache.myfaces.trinidad.SelectOne["correntePnifa"]--><span
> > id="correntePnifa" class="x21">
> >                                 <input type="radio" name="correntePnifa"
> > id="correntePnifa:_0" value="0"
> > onclick="_adfspu('mainTemplateform1',1,'correntePnifa','correntePnifa');return
> > true;"><label
> > for="correntePnifa:_0">Corrente</label>
> >                                 <input type="radio" name="correntePnifa"
> > id="correntePnifa:_1" value="1" checked
> > onclick="_adfspu('mainTemplateform1',1,'correntePnifa','correntePnifa');return
> > true;"><label
> > for="correntePnifa:_1">PNIFA</label></span></td>
> >
> >                           </tr></table></td>
> >                     </tr></table><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["j_id15"]--><table
> > cellpadding="0" cellspacing="0" border="0" id="j_id15"
> > style="width: 200px;"><tr>
> >                       <td>
> >
> >                         <hr style="height:1px;">
> >                       </td>
> >
> >                       <td>
> >
> >                         <hr style="height:1px;">
> >                       </td>
> >
> >                       <td>
> >
> >
> >                         <hr style="height:1px;">
> >                       </td>
> >                     </tr></table><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["j_id17"]--><table
> > cellpadding="0" cellspacing="0" border="0"
> > id="j_id17"><tr>
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.Output["j_id18"]--><span
> > id="j_id18" class="titleCell">C&oacute;digo
> > Pautal</span></td>
> >
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.Output["j_id19"]--><span
> > id="j_id19" class="titleCell">Ano</span></td>
> >
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.Input["codPautal"]--><table
> > id="codPautal__xc_" class="fCodPautal x1e"
> > cellpadding="0" cellspacing="0" border="0"><tr>
> >                             <td class="xu" nowrap></td>
> >
> >
> >                             <td valign="top" nowrap
> > class="AFContentCell"><!--Start:
> > org.apache.myfaces.trinidad.Input["codPautal"]-->
> >                               <input id="codPautal" name="codPautal"
> > class="x1p" size="30" maxlength="22"
> > type="text">
> >                             </td>
> >                           </tr></table></td>
> >
> >                       <td><!--Start:
> > org.apache.myfaces.trinidad.SelectOne["selectAnoPnifa"]--><table
> > id="selectAnoPnifa__xc_" class="stpselect x1j"
> > cellpadding="0" cellspacing="0" border="0"><tr>
> >                             <td class="x12" nowrap></td>
> >
> >                             <td valign="top" nowrap
> > class="AFContentCell"><script>var
> > _locale='en';var
> > _tLocale='en';</script><script
> > src="/stp/adf/jsLibs/resources/LocaleElements_en11-m7.js"></script><!--Start:
> > org.apache.myfaces.trinidad.SelectOne["selectAnoPnifa"]-->
> >                               <select id="selectAnoPnifa"
> > name="selectAnoPnifa" class="x1z">
> >
> >                                 <option value=""></option>
> >
> >                                 <option value="2006">2006</option>
> >
> >                                 <option value="2005">2005</option>
> >
> >                                 <option value="2004">2004</option>
> >                               </select>
> >                             </td>
> >                           </tr></table></td>
> >
> >                     </tr></table><div></div><!--Start:
> > org.apache.myfaces.trinidad.Object["j_id20"]--><div
> > id="j_id20"
> > style="margin-top:15px"></div></div><div></div><!--Start:
> > org.apache.myfaces.trinidad.Command["j_id21"]-->
> >                 <button id="j_id21" name="j_id21" type="button"
> > onclick="submitForm('mainTemplateform1',1,{source:'j_id21'});return
> > false;" class="fButton
> > x6l">Consultar</button><div></div><!--Start:
> > org.apache.myfaces.trinidad.Command["j_id22"]-->
> >                 <button id="j_id22" name="j_id22" type="button"
> > onclick="submitForm('mainTemplateform1',1,{source:'j_id22'});return
> > false;" class="fButton x6l">Ficar</button><div></div>
> >
> >                               </div><div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><div>
> >               <hr class="x98"><div class="x9a"></div><div
> > class="x99"></div><div
> > class="x9b"></div></div><div></div></div><!--Start:
> > org.apache.myfaces.trinidad.Panel["mainTemplatepanelPage1"]--><div
> > class="x9c"><div class="x9d"><span class="x5a"><!--Start:
> > org.apache.myfaces.trinidad.Output["mainTemplateoutputFormatted1"]--><span
> > id="mainTemplateoutputFormatted1">(@VERSION@)
> > @VERSION-DATE@</span></span><span class="x5b"></span><span
> > class="x5c"></span></div></div></span>
> >       <input type="hidden" name="org.apache.myfaces.trinidad.faces.FORM"
> > value="mainTemplateform1"><span
> > id="_mainTemplateform1_Postscript"><input type="hidden"
> > name="org.apache.myfaces.trinidad.faces.STATE" value="!-20ad0190">
> >         <input type="hidden" name="source"><script>var
> > _resetmainTemplateform1Names=["source"];</script><script>var
> > _mainTemplateform1_Validations=['new
> > TrIntegerConverter(null,null,0,2147483647,-2147483648)'];function
> > _mainTemplateform1Validator(f,s){var fl =
> > _multiValidate(f,s,["selectAnoPnifa",0,,0,[]],0);if(fl.length>0){_validationAlert('Form
> > validation failures:'+fl);return false;}else{return true;}}var
> > _mainTemplateform1_Formats=['{0} - {1}'];var
> > mainTemplateform1_SF={};</script></span><script>_submitFormCheck();</script></form>
> >
> >   <!-- MYFACES JAVASCRIPT -->
> >
> > </body>
> >   <!--Created by Apache Trinidad (Apache Trinidad API -
> > 1.0.0-incubating/Apache Trinidad Impl - 1.0.0-incubating),
> > Accessibility:disabled, skin:simple.desktop (simple)--></html>
> >
> >
> >> Francisco,
> >>
> >> Sure... Can you send the jsf code and the html rendered on the client
> >> page?
> >>
> >> -----Original Message-----
> >> From: Francisco Passos [mailto:francisco.passos@opensoft.pt]
> >> Sent: Monday, April 09, 2007 1:00 PM
> >> To: adffaces-user@incubator.apache.org
> >> Subject: RE: Keeping selectOneChoice selection
> >>
> >>
> >> Thank you for your hints.
> >>
> >> I will bear this in mind when I come to this situation - which will be
> >> soon enough.
> >>
> >> However, back to this this particular scenario where no table is
> >> involved,
> >> do you know of any way I manage to solve this problem?
> >>
> >>
> >>> Francisco,
> >>>
> >>> I have found that there is a fundamental problem with how
> >>> UINamingContainers are processed when row indexes are inserted into the
> >>> ids of EditableValueHolders within the container rows.
> >>>
> >>> Understanding The Problem:
> >>> As you may already know, tables have only columns referenced in the
> >>> page
> >>> so it can handle an almost infinite number of rows. Well, because you
> >>> have
> >>> only specified an id for a component within the table column the
> >>> component
> >>> inserts a row index reference in the holders id (via getClientRowKey()
> >>> in
> >>> a table) for each row. This ensures that each iteration of that row has
> >>> a
> >>> unique id. The problem with this is that in some cases this breaks
> >>> automatic setting of bean values (if they are value bound to an
> >>> EditableValueHolder within a row). Another issue is that
> >>> "selectOneChoice"
> >>> components in particular do not have a mechanism in place to ensure
> >>> that
> >>> a
> >>> submitted value that gets set on the component is one of the values
> >>> within
> >>> the internal "SelectItemList" so virtually any value can get set on it.
> >>> If
> >>> the submitted value is not in the list it adds a blank entry in the
> >>> drop
> >>> down menu- what? I have also noticed that selectOneChoice component
> >>> does
> >>> not handle value conversion like regular input text components do.
> >>> Semi-primitive values such as Integers, Booleans, etc. are not
> >>> converted
> >>> automatically like they are for regular input text components. I had
> >>> some
> >>> of the same issues with the "detailStamp" so I created an extended
> >>> table
> >>> component that allows only one toggled "detailStamp" at a time and
> >>> overrides the "getClientRowKey()" excluding row indexes for components
> >>> within the "detailStamp". This solution works very well, but still does
> >>> not address EditableValueHolders within the rows themselves. It seems
> >>> to
> >>> me that we need to reevaluate the usage of inserting row indexes into
> >>> ids!
> >>>
> >>> Possible Solutions:
> >>> The first thing I would check is that you have the valuePassThru="true"
> >>> to
> >>> ensure that its not trying to use the index as the passed value (not
> >>> sure
> >>> why anyone would want to be restricted to just an index). If want to
> >>> ensure that your value is never set to a value that does not exist in
> >>> the
> >>> options you can use a value change listener:
> >>>
> >>>
> >>>     /**
> >>>      * Verifies that an editable value holder event components value is a
> >>> valid
> >>>      * option. If it is not it sets it back to the old value.
> >>>      *
> >>>      * @see #getEditableValueHolderValue(EditableValueHolder)
> >>>      * @param event
> >>>      */
> >>>     public final void verifyValueOption(ValueChangeEvent event) {
> >>>             try {
> >>>                     if (event.getComponent() instanceof EditableValueHolder) {
> >>>                             EditableValueHolder valueHolder = (EditableValueHolder) event
> >>>                                             .getComponent();
> >>>                             if (!isValidSelectOption(event.getComponent(),
> >>> event.getNewValue()))
> >>> {
> >>>                                     // invalid option- regress to old value
> >>>                                     valueHolder.setValue(event.getOldValue());
> >>>                                     valueHolder.setSubmittedValue(event.getOldValue());
> >>>                             }
> >>>                     }
> >>>             } catch (Throwable e) {
> >>>                     log.warn("Unable to verify select value. " + e.getMessage()
> >>>                                     + " cause: " + e.getCause());
> >>>             }
> >>>     }
> >>>
> >>>     /**
> >>>      * Determines if the specified value is a valid selection option in
> >>> the
> >>>      * specified select component.
> >>>      *
> >>>      * @param component
> >>>      * @param value
> >>>      * @return is the specified value a valid select option
> >>>      */
> >>>     public static final boolean isValidSelectOption(UIComponent component,
> >>>                     Object value) {
> >>>             try {
> >>>                     List<SelectItem> items = SelectItemSupport.getSelectItems(
> >>>                                     component, SelectItemSupport.getConverter(component));
> >>>                     for (SelectItem item : items) {
> >>>                             if (item.getValue() != null && item.getValue().equals(value)) {
> >>>                                     return true;
> >>>                             }
> >>>                     }
> >>>             } catch (Exception e) {
> >>>                     _LOG.warning("Unable to determine if the specified value: " + value
> >>>                                     + " is valid for the select component: " + component);
> >>>             }
> >>>             return false;
> >>>     }
> >>>
> >>>
> >>>
> >>> Probably not the most elegant solution, but nonetheless an effective
> >>> one
> >>> is to manage the submitted row index problems yourself. If nothing else
> >>> this will provide you with a debugging tool to determine if the row
> >>> index
> >>> references are preventing your values from getting set:
> >>>     /**
> >>>      * <p>
> >>>      * Gets a parameter value from the request scope by an editale value
> >>> holder
> >>>      * components id. This method will set/return the holders submitted
> >>> value
> >>>      * from the request.
> >>>      * </p>
> >>>      * <p>
> >>>      * The holders client id is checked against a possible matching id
> >>> request
> >>>      * parameter. The client id of the holder and the request parameter
> >>> matching
> >>>      * the hodler id may have their own row indexing (such is the case
> >>> with
> >>> a
> >>>      * select menu).
> >>>      * <ol>
> >>>      * <li>The client id against the request parameter</li>
> >>>      * <li>The client id w/o row index against the request parameter</li>
> >>>      * <li>The client id against the request parameter w/o row index</li>
> >>>      * </ol>
> >>>      * </p>
> >>>      *
> >>>      * @param context
> >>>      * @param holder
> >>>      * @return the parameter value
> >>>      */
> >>>     @SuppressWarnings("unchecked")
> >>>     public static final Object getRequestParameterByHolderId(
> >>>                     FacesContext context, EditableValueHolder holder) {
> >>>             if (log.isDebugEnabled())
> >>>                     log.debug("getRequestParameterForNamingContainer(" + context + ','
> >>>                                     + holder + ")");
> >>>             if (holder != null && holder instanceof UIComponent) {
> >>>                     String clientId = ((UIComponent) holder).getClientId(context);
> >>>                     String clientIdWithOutRowIds = removeRowIdReferences(clientId);
> >>>                     String id = ((UIComponent) holder).getId();
> >>>                     Map<String, Object> map = context.getExternalContext()
> >>>                                     .getRequestParameterMap();
> >>>                     if (map != null && map.entrySet() != null) {
> >>>                             for (Map.Entry<String, Object> entry : map.entrySet()) {
> >>>                                     if (entry.getKey().indexOf(id) >= 0) {
> >>>                                             if (entry.getKey().equalsIgnoreCase(clientId)
> >>>                                                             || entry.getKey().equalsIgnoreCase(
> >>>                                                                             clientIdWithOutRowIds)
> >>>                                                             || removeRowIdReferences(
> >>>                                                                             entry.getKey()).equalsIgnoreCase(
> >>>                                                                             clientId)) {
> >>>                                                     try {
> >>>                                                             setConvertedAndValidatedValue(context,
> >>>                                                                                             holder, entry.getValue());
> >>>                                                     } catch (Exception e) {
> >>>                                                             log.error("Unable to capture the converted "
> >>>                                                                             + "value for component(" + holder
> >>>                                                                             + ") value: " + entry.getValue(), e);
> >>>                                                     }
> >>>                                                     return holder.getSubmittedValue();
> >>>                                             }
> >>>                                     }
> >>>                             }
> >>>                     }
> >>>             }
> >>>             return null;
> >>>     }
> >>>
> >>>     /**
> >>>      * Removes any row id references that may exist within the specified
> >>> client
> >>>      * id
> >>>      *
> >>>      * @param clientId
> >>>      * @return the client id
> >>>      */
> >>>     public static final String removeRowIdReferences(String clientId) {
> >>>             if (log.isDebugEnabled())
> >>>                     log.debug("removeRowIdReferences(" + clientId + ')');
> >>>             if (clientId != null) {
> >>>                     String[] ids = clientId.split(String
> >>>                                     .valueOf(NamingContainer.SEPARATOR_CHAR));
> >>>                     for (String id : ids) {
> >>>                             try {
> >>>                                     Integer.parseInt(id);
> >>>                             } catch (Exception e) {
> >>>                                     continue;
> >>>                             }
> >>>                             clientId = clientId.replace(NamingContainer.SEPARATOR_CHAR + id
> >>>                                             + NamingContainer.SEPARATOR_CHAR, String
> >>>                                             .valueOf(NamingContainer.SEPARATOR_CHAR));
> >>>                     }
> >>>             }
> >>>             return clientId;
> >>>     }
> >>>
> >>>     /**
> >>>      * Invokes the internal converter/validators(s) for an editable value
> >>> holder
> >>>      * and returns the converted value
> >>>      *
> >>>      * @param context
> >>>      * @param holder
> >>>      * @param value
> >>>      * @return the converted value
> >>>      * @throws ValidatorException
> >>>      * @throws EvaluationException
> >>>      * @throws MethodNotFoundException
> >>>      */
> >>>     public static final Object setConvertedAndValidatedValue(FacesContext
> >>> context,
> >>>                     EditableValueHolder holder, Object value)
> >>>                     throws ValidatorException, EvaluationException,
> >>>                     MethodNotFoundException {
> >>>             if (holder != null) {
> >>>                     if (holder.getConverter() != null) {
> >>>                             value = holder.getConverter().getAsObject(context,
> >>>                                             (UIComponent) holder,
> >>>                                             value != null ? value.toString() : null);
> >>>                     }
> >>>                     if (holder instanceof UIComponent) {
> >>>                             if (holder.getValidators() != null) {
> >>>                                     for (Validator v : holder.getValidators()) {
> >>>                                             v.validate(context, (UIComponent) holder, value);
> >>>                                     }
> >>>                             }
> >>>                     }
> >>>                     if (holder.getValidator() != null) {
> >>>                             holder.getValidator().invoke(context, new Object[] { value });
> >>>                     }
> >>>                     holder.setSubmittedValue(value);
> >>>                     return value;
> >>>             }
> >>>             return null;
> >>>     }
> >>>
> >>> -----Original Message-----
> >>> From: Francisco Passos [mailto:francisco.passos@opensoft.pt]
> >>> Sent: Monday, April 09, 2007 11:17 AM
> >>> To: William Hoover
> >>> Subject: RE: Keeping selectOneChoice selection
> >>>
> >>>
> >>> No, it is in a facet for a panelPage.
> >>>
> >>> In it, I have a panelGroupLayout, then a panelHorizontalLayout and
> >>> finally
> >>> in it the panelPage.
> >>>
> >>> If you feel it's best, I can attach the code or paste it in the mail
> >>> body.
> >>>
> >>> Either way, if the selectOneChoice were in a table (something I will
> >>> surely need), what would the solution be?
> >>>
> >>> Thank you,
> >>>
> >>> Francisco
> >>>
> >>>
> >>>
> >>>> Francisco,
> >>>>
> >>>> Is your selectOneChoice in a table?
> >>>>
> >>>> -----Original Message-----
> >>>> From: Francisco Passos [mailto:francisco.passos@opensoft.pt]
> >>>> Sent: Monday, April 09, 2007 10:55 AM
> >>>> To: adffaces-user@incubator.apache.org
> >>>> Subject: Keeping selectOneChoice selection
> >>>>
> >>>>
> >>>> Hello there.
> >>>>
> >>>> I'm new to JSF and Trinidad, so please bear with my simplistic doubts.
> >>>>
> >>>> I'm struggling to keep a selectOneChoice selection upon a postback
> >>>> using
> >>>> a
> >>>> request-scoped bean.
> >>>>
> >>>> At first I couldn't even maintain the values in the list, but I found
> >>>> that
> >>>> placing a h:inputHidden on the page and declaring its value to be
> >>>> #{myBean.valueList}, they could be kept. Furthermore I've tested the
> >>>> seme
> >>>> using pageFlow and it worked.
> >>>>
> >>>> However, I cannot keep the selected value in the dropdown list, it
> >>>> just
> >>>> resets.
> >>>>
> >>>> What is the correct way to do this simple task without using session
> >>>> beans?
> >>>>
> >>>> Thank you for your time and attention,
> >>>>
> >>>> Francisco Passos
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>> Francisco Passos
> >>> Opensoft - Soluções Informáticas, Lda
> >>> Telemóvel:  +351 91 238 52 76
> >>> Escritório: +351 21 380 44 10
> >>> Email:      francisco.passos@opensoft.pt
> >>>
> >>>
> >>>
> >>
> >>
> >> Francisco Passos
> >> Opensoft - Soluções Informáticas, Lda
> >> Telemóvel:  +351 91 238 52 76
> >> Escritório: +351 21 380 44 10
> >> Email:      francisco.passos@opensoft.pt
> >>
> >>
> >>
> >
> >
> > Francisco Passos
> > Opensoft - Soluções Informáticas, Lda
> > Telemóvel:  +351 91 238 52 76
> > Escritório: +351 21 380 44 10
> > Email:      francisco.passos@opensoft.pt
> >
> >
> >
>
>
>
>

Mime
View raw message