Hi, see jsf spec 1.1 : 7.4.2 Default NavigationHandler Implementation
Regards Volker Matthias Kahlau wrote: > Hi Volker, > > > thanks for your support. I didn't know that the view is newly created. Do > you know a source where this is documented (apart from the source code)? > > > Regards, > > Matthias > > >>-----Ursprüngliche Nachricht----- >>Von: [EMAIL PROTECTED] >>[mailto:[EMAIL PROTECTED] Auftrag >>von Volker Weber >>Gesendet: Sonntag, 1. Januar 2006 22:52 >>An: MyFaces Discussion >>Betreff: Re: AW: AW: EditableValueHolder rendering behavior / Restore >>View >> >> >>Hi Matthias, >> >>i think the problem is the return value of your action method. >> >>I'm not really sure, so please correct me if the following is incorrect. >> >>If a action method returns a value != null the navigation cames in, then >>a new view is created, also if the new viewId is the same as the old >>one. If the action method returns null the old view is rerendered. >> >>The reason for persistent value in one of your components is the >>component binding. >> >>Try returning null in deleteAuswMoeglichkeiten(). >> >>Regards >> Volker >> >>Matthias Kahlau wrote: >> >>>Hi! >>> >>>Happy new year :) >>> >>> >>>Here are the code snippets: >>> >>>-------------- >>>The JSF page: >>>-------------- >>>... >>> >>><h:form> >>> >>>... >>> >>><%-- the inputTextarea which is rendered empty again after the >> >>JSF page is >> >>>redisplayed --%> >>> <h:panelGroup> >>> <h:outputLabel for="fragetext" >>> value="Frage*: " >>> styleClass="formLabelTop" >>> lang="de" >>> title="Textfeld zur Eingabe der Frage" /> >>> <t:inputTextarea id="fragetext" >>> value="#{EinfAuswFrageBacking.einfAuswFrage.fragetext}" >>> required="true" >>> cols="100" >>> rows="3" >>> title="Textfeld zur Eingabe der Frage"> >>> <f:validateLength maximum="256" /> >>> </t:inputTextarea> >>> <f:verbatim><br/></f:verbatim> >>> <h:message for="fragetext" >>> styleClass="error" >>> lang="de" >>> title="Fehlermeldung für das Frage Textfeld" /> >>> </h:panelGroup> >>> >>><%-- the selectBooleanCheckbox which is rendered empty again >> >>after the JSF >> >>>page is redisplayed --%> >>> <h:panelGroup> >>> <h:outputLabel for="mussFrage" value="Antwort erforderlich: " >>> styleClass="formLabel" >>> lang="de" >>> title="Auswahlfeld zur Angabe, ob die Antwort >> >>erforderlich ist" /> >> >>> <t:selectBooleanCheckbox id="mussFrage" >>> value="#{EinfAuswFrageBacking.einfAuswFrage.mussFrage}" >>> required="false" >>> lang="de" >>> title="Auswählen, falls Antwort erforderlich" /> >>> <h:outputText escape="false" value=" Ja, Frage muss >> >>beantwortet >> >>> werden" >>> styleClass="formText" >>> lang="de" >>> title="Auswählen, falls Antwort erforderlich" /> >>> </h:panelGroup> >>> >>><%-- the selectOneRadio which is rendered empty again after the >> >>JSF page is >> >>>redisplayed --%> >>> <h:panelGrid columns="1"> >>> <t:column> >>> <h:outputLabel for="auswMoeglichkeitRadios" >>> value="Auswahlmöglichkeiten anzeigen:" >>> styleClass="formLabel" >>> lang="de" >>> title="Anzeigeeigenschaften der Auswahlmöglichkeiten" /> >>> <f:verbatim><br/></f:verbatim> >>> <t:selectOneRadio id="auswMoeglichkeitRadios" >>> value="#{EinfAuswFrageBacking.auswMoeglichkeitOpt}" >>> required="true" >>> layout="spread" >>> styleClass="formText" >>> lang="de" >>> title="Radiobuttons zur Auswahl der Anzeigeeigenschaften der >>> Auswahlmöglichkeiten"> >>> <f:selectItems >>> value="#{EinfAuswFrageBacking.auswMoeglichkeitOptions}" /> >>> </t:selectOneRadio> >>> </t:column> >>> >>><%-- the inputText which is NOT rendered empty again after the >> >>JSF page is >> >>>redisplayed (the value entered is rendered) --%> >>> <t:column> >>> <t:radio for="auswMoeglichkeitRadios" index="0" /> >>> <t:inputText id="anzahlSpalten" >>> binding="#{EinfAuswFrageBacking.inputTextAnzahlSpalten}" >>> value="#{EinfAuswFrageBacking.einfAuswFrage.spalten}" >>> required="false" >>> readonly="false" >>> disabled="false" >>> maxlength="2" >>> size="2" >>> title="Textfeld zur Eingabe der Spaltenanzahl" >>> immediate="false"> >>> <f:validateLongRange minimum="1" maximum="12" /> >>> </t:inputText> >>> <h:outputText escape="false" >>> value=" (1 bis 12)" >>> styleClass="formText" >>> lang="de" >>> title="Zahlenbereich ist 1 bis 12" /> >>> <f:verbatim><br/></f:verbatim> >>> <h:message for="anzahlSpalten" >>> styleClass="error" >>> lang="de" >>> title="Fehlermeldung für das Spaltenanzahl Textfeld" /> >>> </t:column> >>> >>> <t:column> >>> <t:radio for="auswMoeglichkeitRadios" index="1" /> >>> </t:column> >>> </h:panelGrid> >>> >>> >>><%-- the dataTable from which rows are deleted with the button >> >>below --%> >> >>> <t:dataTable id="dataTableAuswahlmoeglichkeiten" >>> binding="#{EinfAuswFrageBacking.dataTable}" >>> value="#{EinfAuswFrageBacking.auswMoeglichkeitenModel}" >>> var="row" >>> renderedIfEmpty="true" >>> preserveDataModel="false"> >>> >>> <t:column width="30"> >>> <t:selectBooleanCheckbox >> >>binding="#{EinfAuswFrageBacking.checkbox}" >> >>> required="false" >>> lang="de" >>> title="Auswahlmoeglichkeit auswählen zum Löschen" >>> immediate="false" /> >>> </t:column> >>> >>> ... >>> >>> </t:dataTable> >>> >>> >>><%-- the action button to delete rows with --%> >>> <h:commandButton value="Auswahl Entfernen" >>> action="#{EinfAuswFrageBacking.deleteAuswMoeglichkeiten}" >>> immediate="true" /> >>> >>>... >>> >>></h:form> >>> >>>... >>> >>>----------------------------------------------------------------- >>>The action method of the EinfAuswFrageBacking.java Backing-Bean: >>>----------------------------------------------------------------- >>> >>>public String deleteAuswMoeglichkeiten() { >>> List toDelete = this.getSelectedAuswMoeglichkeiten(); >>> Iterator it = toDelete.iterator(); >>> >>> while (it.hasNext()) { >>> this.auswMoeglichkeitenList.remove(it.next()); >>> } >>> >>> >>> int size = this.auswMoeglichkeitenList.size(); >>> for (int i = 0; i < size; i++) { >>> Auswahlmoeglichkeit am = >>>(Auswahlmoeglichkeit)this.auswMoeglichkeitenList >>> .get(i); >>> >>> am.setAuswahlindex(new Integer(i + 1)); >>> } >>> >>> >>> this.checkbox.setSelected(false); >>> >>> return Constants.ACTION_SUCCESS; >>> } >>> >>> >>>---------------- >>>faces-config.xml: >>>---------------- >>> >>><navigation-rule> >>> <from-view-id>/Management/Fragen/EinfAuswFrage.jsp</from-view-id> >>> <navigation-case> >>> >><from-action>#{EinfAuswFrageBacking.deleteAuswMoeglichkeiten}</from-action >> >>> <from-outcome>success</from-outcome> >>> >><to-view-id>/Management/Fragen/EinfAuswFrage.jsp</to-view-id> >> >>> </navigation-case> >>></navigation-rule> >>> >>> >>> >>>By the way: the inputTextarea is not the only component which >> >>is rendered >> >>>empty when the page is redisplayed after submitting it >> >>non-empty - it also >> >>>happens to the selectBooleanCheckbox, and to the >> >>selectOneRadio, but not to >> >>>the inputText, which renders the value entered before >> >>submitting the page >> >>>(In my last email, I spuriously wrote that the inputText is >> >>rendered empty, >> >>>but it actually was an inputTextarea!). >>> >>> >>>Regards, >>> >>>Matthias >>> >>> >>> >>>>-----Ursprüngliche Nachricht----- >>>>Von: [EMAIL PROTECTED] >>>>[mailto:[EMAIL PROTECTED] Auftrag >>>>von Volker Weber >>>>Gesendet: Samstag, 31. Dezember 2005 13:22 >>>>An: MyFaces Discussion >>>>Betreff: Re: AW: EditableValueHolder rendering behavior / Restore View >>>> >>>> >>>>Hi, >>>> >>>>Matthias, can you post the relevant jsf code, and the >>>>action/actionListener code? >>>> >>>>This may help us to see what's wrong. >>>> >>>>Regards >>>> Volker >>>> >>>>Matthias Kahlau wrote: >>>> >>>> >>>>>Hi Simon, >>>>> >>>>> >>>>> >>>>> >>>>>>Perhaps your button is inside a different form from the one containing >>>>>>your input text? HTML only supports submitting one form, so all >>>>>>components in other forms will see their input as missing, ie >> >>will have >> >>>>>>their submitted value reset.. >>>>> >>>>> >>>>>Actually not - all components are contained in the same form.... >>>>> >>>>>Looks buggy.... >>>>> >>>>> >>>>>Regards, >>>>> >>>>>Matthias >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>>-----Ursprüngliche Nachricht----- >>>>>>Von: [EMAIL PROTECTED] >>>>>>[mailto:[EMAIL PROTECTED] >> >>m Auftrag >> >>>>>>von Simon Kitching >>>>>>Gesendet: Samstag, 31. Dezember 2005 05:33 >>>>>>An: MyFaces Discussion >>>>>>Betreff: Re: EditableValueHolder rendering behavior / Restore View >>>>>> >>>>>> >>>>>>Matthias Kahlau wrote: >>>>>> >>>>>> >>>>>> >>>>>>>Hi all! >>>>>>> >>>>>>> >>>>>>>I have an non-immediate inputText in my form, and an immediate >>>>>> >>>>>>commandButton >>>>>> >>>>>> >>>>>> >>>>>>>to delete some selected rows in a table. When the user enters >>>>>> >>>>>>some text in >>>>>> >>>>>> >>>>>> >>>>>>>the inputText and deletes some rows after that, the same JSF page is >>>>>>>redisplayed, but the inputText is empty again. Why isn't the >>>>>> >>>>>>submitted value >>>>>> >>>>>> >>>>>> >>>>>>>of the inputText rendered? >>>>>> >>>>>>It will be in the usual case. >>>>>> >>>>>>Perhaps your button is inside a different form from the one containing >>>>>>your input text? HTML only supports submitting one form, so all >>>>>>components in other forms will see their input as missing, ie >> >>will have >> >>>>>>their submitted value reset.. >>>>>> >>>>>>Regards, >>>>>> >>>>>>Simon >>>>> >>>>> >>>>-- >>>>Don't answer to From: address! >>>>Mail to this account are droped if not recieved via mailinglist. >>>>To contact me direct create the mail address by >>>>concatenating my forename to my senders domain. >>> >>> >>-- >>Don't answer to From: address! >>Mail to this account are droped if not recieved via mailinglist. >>To contact me direct create the mail address by >>concatenating my forename to my senders domain. > > -- Don't answer to From: address! Mail to this account are droped if not recieved via mailinglist. To contact me direct create the mail address by concatenating my forename to my senders domain.