You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Matthias Kahlau <mk...@web.de> on 2006/01/01 21:08:31 UTC

AW: AW: EditableValueHolder rendering behavior / Restore View

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="&nbsp;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="&nbsp;(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: users-return-14444-mkahlau=web.de@myfaces.apache.org
> [mailto:users-return-14444-mkahlau=web.de@myfaces.apache.org]Im 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: users-return-14438-mkahlau=web.de@myfaces.apache.org
> >>[mailto:users-return-14438-mkahlau=web.de@myfaces.apache.org]Im 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.


Re: AW: AW: AW: EditableValueHolder rendering behavior / Restore View

Posted by Volker Weber <us...@weber-oldenburg.de>.
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: users-return-14490-mkahlau=web.de@myfaces.apache.org
>>[mailto:users-return-14490-mkahlau=web.de@myfaces.apache.org]Im 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="&nbsp;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="&nbsp;(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: users-return-14444-mkahlau=web.de@myfaces.apache.org
>>>>[mailto:users-return-14444-mkahlau=web.de@myfaces.apache.org]Im 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: users-return-14438-mkahlau=web.de@myfaces.apache.org
>>>>>>[mailto:users-return-14438-mkahlau=web.de@myfaces.apache.org]I
>>
>>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.

Re: AW: AW: AW: EditableValueHolder rendering behavior / Restore View

Posted by Volker Weber <us...@weber-oldenburg.de>.
Sorry, can't help with that.

don't know mutch about tomahawk components.

Anyone else please.

Matthias Kahlau wrote:
> Hi Volker,
> 
> I just tried returning null from the action method, and the entered values
> of the inputTextarea and selectBooleanCheckbox are preserved, but not the
> selection of the selectOneRadio component!
> 
> 
> Regards,
> 
> Matthias
> 
> 
>>-----Ursprüngliche Nachricht-----
>>Von: users-return-14491-mkahlau=web.de@myfaces.apache.org
>>[mailto:users-return-14491-mkahlau=web.de@myfaces.apache.org]Im Auftrag
>>von Matthias Kahlau
>>Gesendet: Sonntag, 1. Januar 2006 23:12
>>An: MyFaces Discussion
>>Betreff: AW: AW: AW: EditableValueHolder rendering behavior / Restore
>>View
>>
>>
>>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: users-return-14490-mkahlau=web.de@myfaces.apache.org
>>>[mailto:users-return-14490-mkahlau=web.de@myfaces.apache.org]Im 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="&nbsp;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="&nbsp;(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: users-return-14444-mkahlau=web.de@myfaces.apache.org
>>>
>>>>[mailto:users-return-14444-mkahlau=web.de@myfaces.apache.org]Im 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: users-return-14438-mkahlau=web.de@myfaces.apache.org
>>>>>>>[mailto:users-return-14438-mkahlau=web.de@myfaces.apache.org]I
>>>
>>>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.

AW: AW: AW: EditableValueHolder rendering behavior / Restore View

Posted by Matthias Kahlau <mk...@web.de>.
Hi Volker,

I just tried returning null from the action method, and the entered values
of the inputTextarea and selectBooleanCheckbox are preserved, but not the
selection of the selectOneRadio component!


Regards,

Matthias

> -----Ursprüngliche Nachricht-----
> Von: users-return-14491-mkahlau=web.de@myfaces.apache.org
> [mailto:users-return-14491-mkahlau=web.de@myfaces.apache.org]Im Auftrag
> von Matthias Kahlau
> Gesendet: Sonntag, 1. Januar 2006 23:12
> An: MyFaces Discussion
> Betreff: AW: AW: AW: EditableValueHolder rendering behavior / Restore
> View
>
>
> 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: users-return-14490-mkahlau=web.de@myfaces.apache.org
> > [mailto:users-return-14490-mkahlau=web.de@myfaces.apache.org]Im 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="&nbsp;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="&nbsp;(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: users-return-14444-mkahlau=web.de@myfaces.apache.org
> >
> >>[mailto:users-return-14444-mkahlau=web.de@myfaces.apache.org]Im 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: users-return-14438-mkahlau=web.de@myfaces.apache.org
> > >>>>[mailto:users-return-14438-mkahlau=web.de@myfaces.apache.org]I
> > 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.
>


AW: AW: AW: EditableValueHolder rendering behavior / Restore View

Posted by Matthias Kahlau <mk...@web.de>.
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: users-return-14490-mkahlau=web.de@myfaces.apache.org
> [mailto:users-return-14490-mkahlau=web.de@myfaces.apache.org]Im 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="&nbsp;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="&nbsp;(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: users-return-14444-mkahlau=web.de@myfaces.apache.org
> >>[mailto:users-return-14444-mkahlau=web.de@myfaces.apache.org]Im 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: users-return-14438-mkahlau=web.de@myfaces.apache.org
> >>>>[mailto:users-return-14438-mkahlau=web.de@myfaces.apache.org]I
> 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.


Re: AW: AW: EditableValueHolder rendering behavior / Restore View

Posted by Volker Weber <us...@weber-oldenburg.de>.
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="&nbsp;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="&nbsp;(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: users-return-14444-mkahlau=web.de@myfaces.apache.org
>>[mailto:users-return-14444-mkahlau=web.de@myfaces.apache.org]Im 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: users-return-14438-mkahlau=web.de@myfaces.apache.org
>>>>[mailto:users-return-14438-mkahlau=web.de@myfaces.apache.org]Im 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.