Thank you once more. I'm not sure I understood the advice you just game me.
Considering this:
<tr:selectOneChoice id="selectAnoPnifa" binding="#{fichaBean.anoPnifa}"
value="#{fichaBean.anoPnifaSeleccionado}" valuePassThru="true">
Are you recommending me to place anoPnifa in pageFlowScope? Or
anoPnifaSeleccionado?
And if so, can or should it be done like this?
public String getAnoPnifaSeleccionado() {
RequestContext context = RequestContext.getCurrentInstance();
this.anoPnifaSeleccionado = (String)
context.getProcessScope().get("anoPnifaSeleccionado");
return anoPnifaSeleccionado;
}
public void setAnoPnifaSeleccionado(String anoPnifaSeleccionado) {
this.anoPnifaSeleccionado = anoPnifaSeleccionado;
RequestContext context = RequestContext.getCurrentInstance();
context.getProcessScope().put("anoPnifaSeleccionado",
this.anoPnifaSeleccionado);
}
Francisco Passos
> 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:[EMAIL PROTECTED]
> Sent: Tuesday, April 10, 2007 5:41 AM
> To: [email protected]
> 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:[EMAIL PROTECTED]
>> Sent: Monday, April 09, 2007 1:26 PM
>> To: [email protected]
>> 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çã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çã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ó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çã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çã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ó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:[EMAIL PROTECTED]
>>> Sent: Monday, April 09, 2007 1:00 PM
>>> To: [email protected]
>>> 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:[EMAIL PROTECTED]
>>>> 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:[EMAIL PROTECTED]
>>>>> Sent: Monday, April 09, 2007 10:55 AM
>>>>> To: [email protected]
>>>>> 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: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>
>>>
>>> Francisco Passos
>>> Opensoft - Soluções Informáticas, Lda
>>> Telemóvel: +351 91 238 52 76
>>> Escritório: +351 21 380 44 10
>>> Email: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>>
>> Francisco Passos
>> Opensoft - Soluções Informáticas, Lda
>> Telemóvel: +351 91 238 52 76
>> Escritório: +351 21 380 44 10
>> Email: [EMAIL PROTECTED]
>>
>>
>>
>
>
>
>
Francisco Passos
Opensoft - Soluções Informáticas, Lda
Telemóvel: +351 91 238 52 76
Escritório: +351 21 380 44 10
Email: [EMAIL PROTECTED]