ICEfaces
  1. ICEfaces
  2. ICE-3321

Create a outputText and inputText component that uses ResponseWriter instead of DOMContext

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.8DR#1, 1.8
    • Component/s: ICE-Components
    • Labels:
      None
    • Environment:
      All

      Description

      In order to better assess the potential performance improvements made possible by converting existing ICEfaces components that use DOM Context D2D rendering techniques to instead use the JSF-standard ResponseWriter technique we need to create an ice:outputText component that uses ResponseWriter for rendering.

        Issue Links

          Activity

          Hide
          Adnan Durrani added a comment -

          revision 17206.

          The renderer of the ice:outputText is using the responseWriter.

          Show
          Adnan Durrani added a comment - revision 17206. The renderer of the ice:outputText is using the responseWriter.
          Hide
          Adnan Durrani added a comment -

          revision: 17213

          The renderer is being used by the plain html as well, which requires this renderer to move to the core branch, so the icefaces.jar can be used independently.

          Show
          Adnan Durrani added a comment - revision: 17213 The renderer is being used by the plain html as well, which requires this renderer to move to the core branch, so the icefaces.jar can be used independently.
          Hide
          Adnan Durrani added a comment -

          Change inputText renderer to use ResponseWriter

          Show
          Adnan Durrani added a comment - Change inputText renderer to use ResponseWriter
          Hide
          Adnan Durrani added a comment -

          h: and ice: inputText renderers are using ResponseWriter:
          revision 17226

          Show
          Adnan Durrani added a comment - h: and ice: inputText renderers are using ResponseWriter: revision 17226
          Hide
          Adnan Durrani added a comment -

          Regression fixed related to the effects with inputText and outputText
          revision : 17247

          Show
          Adnan Durrani added a comment - Regression fixed related to the effects with inputText and outputText revision : 17247
          Hide
          Adnan Durrani added a comment -

          Mandeep Arora wrote:
          > Everything looks good except the InputText component causing failures in regression & sample application tests.
          > ICE-2124 failing because changing the value in the inputtext does not change the selected tab)
          > ICE-2473 failing for f:attribute in inputtext component
          > ICE-1960 failing due to converter issue again related to inputtext component
          > In Comp-Showcase Gmap test fails when user tries to find a place by typing the place in the inputtext component

          Show
          Adnan Durrani added a comment - Mandeep Arora wrote: > Everything looks good except the InputText component causing failures in regression & sample application tests. > ICE-2124 failing because changing the value in the inputtext does not change the selected tab) > ICE-2473 failing for f:attribute in inputtext component > ICE-1960 failing due to converter issue again related to inputtext component > In Comp-Showcase Gmap test fails when user tries to find a place by typing the place in the inputtext component
          Hide
          Adnan Durrani added a comment -

          converter fixed revision17400.

          Mandeep can you please verify the outputText and inputText?

          Show
          Adnan Durrani added a comment - converter fixed revision17400. Mandeep can you please verify the outputText and inputText?
          Hide
          Adnan Durrani added a comment -

          revision 17410
          Effect handler fixed.

          Show
          Adnan Durrani added a comment - revision 17410 Effect handler fixed.
          Hide
          Adnan Durrani added a comment -

          Following attributes are not working for InputText:
          a) individual value binding

          • visible
          • readonly
          • onBlur
          • onfocus
          • onkeypress
          • onmouseout
          • onMouseouteffect
          • dir
          • autocomplete

          b) bean binding

          • visible
          • readonly
          • disable
          • onBlur
          • onFocus
          • onKeypress
          • onMouseout
          • onMouseouteffect
          • autocomplete

          c) other attributes not working are

          • action
          • actionListener
          • immediate

          Following attributes not working for OutputText
          a) individual value binding

          • visible
          • onKeydowneffect
          • onKeypresseffect
          • on Keyupeffect
          • onMouseouteffect
          • dir

          b) bean binding

          • effect in general not working correctly, effect shown when attributes are changed as well without appropriate key or mouse activity
          • dir
          Show
          Adnan Durrani added a comment - Following attributes are not working for InputText: a) individual value binding visible readonly onBlur onfocus onkeypress onmouseout onMouseouteffect dir autocomplete b) bean binding visible readonly disable onBlur onFocus onKeypress onMouseout onMouseouteffect autocomplete c) other attributes not working are action actionListener immediate Following attributes not working for OutputText a) individual value binding visible onKeydowneffect onKeypresseffect on Keyupeffect onMouseouteffect dir b) bean binding effect in general not working correctly, effect shown when attributes are changed as well without appropriate key or mouse activity dir
          Hide
          Adnan Durrani added a comment -

          Following attributes are not working for InputText:
          a) individual value binding

          • visible
          • readonly
          • onBlur
          • onfocus
          • onkeypress
          • onmouseout
          • onMouseouteffect
          • dir
          • autocomplete

          With the head the following attributes are already working using the value binding.

          • onmouseout
          • onkeypress
          • onfocus
          • onblur
          • dir

          The following attributes are not working using the value binging:

          • visible
          • readonly
          • onMouseouteffect
          • autocomplete

          b) bean binding

          • visible
          • readonly
          • disable
          • onBlur
          • onFocus
          • onKeypress
          • onMouseout
          • onMouseouteffect
          • autocomplete

          With the head the following attributes are already working with the component binding.

          • onmouseout
          • onkeypress
          • onfocus
          • onblur

          The following attributes are not working with the component binding.

          • visible
          • readonly
          • disable
          • onmouseouteffect
          • autocomplete

          c) other attributes not working are

          • action (already working with the head)
          • actionListener (already working with the head)
          • immediate (didn't test it yet)
          Show
          Adnan Durrani added a comment - Following attributes are not working for InputText: a) individual value binding visible readonly onBlur onfocus onkeypress onmouseout onMouseouteffect dir autocomplete With the head the following attributes are already working using the value binding. onmouseout onkeypress onfocus onblur dir The following attributes are not working using the value binging: visible readonly onMouseouteffect autocomplete b) bean binding visible readonly disable onBlur onFocus onKeypress onMouseout onMouseouteffect autocomplete With the head the following attributes are already working with the component binding. onmouseout onkeypress onfocus onblur The following attributes are not working with the component binding. visible readonly disable onmouseouteffect autocomplete c) other attributes not working are action (already working with the head) actionListener (already working with the head) immediate (didn't test it yet)
          Hide
          Adnan Durrani added a comment -

          The following commit fixes the visible, readonly, disabled and the autocomplete. The onmouseouteffect was already working, but I had a wrong test case. All inputText related attributes are fixed.

          trunk: revision 17484

          Show
          Adnan Durrani added a comment - The following commit fixes the visible, readonly, disabled and the autocomplete. The onmouseouteffect was already working, but I had a wrong test case. All inputText related attributes are fixed. trunk: revision 17484
          Hide
          Adnan Durrani added a comment -

          outputText fixed.
          trunk: revision 17489

          Mandeep can you please retest it?

          Show
          Adnan Durrani added a comment - outputText fixed. trunk: revision 17489 Mandeep can you please retest it?
          Hide
          Adnan Durrani added a comment -

          Test result from Mandeep:

          Following attributes are not working for InputText:
          a) individual value binding

          • visible [works]
          • readonly [works]
          • onBlur [if the user specified javascript does not end with semicolon, you'll get malformed js. eg: onblur="alert('blah')setfocus('');" the setfocus('') portion is not part of what user enters.]
          • onfocus [same issue as onblur]
          • onkeypress [same issue as onblur]
          • onmouseout [javascript is triggered twice on FF]
          • onMouseouteffect [effect is trigger on mouseover as well as mouseout (FF only)]
          • dir [the attribute is not binded on the jspx page (fixed)]
          • autocomplete [works]

          b) bean binding

          • visible [works]
          • readonly [works]
          • disable [works]
          • onBlur [same issue as before with malformed javascript]
          • onFocus [same issue as before with malformed javascript]
          • onKeypress [same issue as before with malformed javascript]
          • onMouseout [javascript is triggered twice on FF]
          • onMouseouteffect [effect is trigger on mouseover as well as mouseout (FF only)]
          • autocomplete [works]

          c) other attributes not working are

          • action [works]
          • actionListener [works]
          • immediate [doesn't work. even though immediate="true", validation is not skipped.]

          Following attributes not working for OutputText
          a) individual value binding

          • visible [works]
          • onKeydowneffect [works, but require selenium to trigger]
          • onKeypresseffect [works, but require selenium to trigger]
          • on Keyupeffect [works, but require selenium to trigger]
          • onMouseouteffect [works]
          • dir [works, but you cannot see the effect if you only use 1 word. use a string that ends with a period, and you'll see that the period is moved to the far left. (fixed)]

          b) bean binding

          • effect in general not working correctly, effect shown when attributes are changed as well without appropriate key or mouse activity [all effects work now]
          • dir [same thing as with value binding]
          Show
          Adnan Durrani added a comment - Test result from Mandeep: Following attributes are not working for InputText: a) individual value binding visible [works] readonly [works] onBlur [if the user specified javascript does not end with semicolon, you'll get malformed js. eg: onblur="alert('blah')setfocus('');" the setfocus('') portion is not part of what user enters.] onfocus [same issue as onblur] onkeypress [same issue as onblur] onmouseout [javascript is triggered twice on FF] onMouseouteffect [effect is trigger on mouseover as well as mouseout (FF only)] dir [the attribute is not binded on the jspx page (fixed)] autocomplete [works] b) bean binding visible [works] readonly [works] disable [works] onBlur [same issue as before with malformed javascript] onFocus [same issue as before with malformed javascript] onKeypress [same issue as before with malformed javascript] onMouseout [javascript is triggered twice on FF] onMouseouteffect [effect is trigger on mouseover as well as mouseout (FF only)] autocomplete [works] c) other attributes not working are action [works] actionListener [works] immediate [doesn't work. even though immediate="true", validation is not skipped.] Following attributes not working for OutputText a) individual value binding visible [works] onKeydowneffect [works, but require selenium to trigger] onKeypresseffect [works, but require selenium to trigger] on Keyupeffect [works, but require selenium to trigger] onMouseouteffect [works] dir [works, but you cannot see the effect if you only use 1 word. use a string that ends with a period, and you'll see that the period is moved to the far left. (fixed)] b) bean binding effect in general not working correctly, effect shown when attributes are changed as well without appropriate key or mouse activity [all effects work now] dir [same thing as with value binding]
          Hide
          Adnan Durrani added a comment -
          • onBlur [if the user specified javascript does not end with semicolon, you'll get malformed js. eg: onblur="alert('blah')setfocus('');" the setfocus('') portion is not part of what user enters.]
            Yes its true, the semicolon is required and its application developer's responsibility to add it. We can parse the string and add one, but it will be an expensive operation, and we are avoiding the string concatenation as well.

          So the conclusion is that everything fixed except the immediate attribute on the inputText component.

          Mandeep do you know, where I can find the test case for the immediate attribute?

          Thanks,

          Show
          Adnan Durrani added a comment - onBlur [if the user specified javascript does not end with semicolon, you'll get malformed js. eg: onblur="alert('blah')setfocus('');" the setfocus('') portion is not part of what user enters.] Yes its true, the semicolon is required and its application developer's responsibility to add it. We can parse the string and add one, but it will be an expensive operation, and we are avoiding the string concatenation as well. So the conclusion is that everything fixed except the immediate attribute on the inputText component. Mandeep do you know, where I can find the test case for the immediate attribute? Thanks,
          Hide
          Adnan Durrani added a comment -

          I have tried the following test case but I wasn't be able to build
          svn\repo\qa\trunk\Attribute-test\inputText

          I have tested the immediate attribute and it working fine, it can be tested using the following

          // Clinking on the commandButton will show the validation error, and eat the actionEvent
          <ice:messages/>
          <ice:form>
          <h2> Immediate </h2>
          <ice:inputText required="true" immediate="true" />
          <ice:commandButton value="click" immediate="true" />
          </ice:form>

          // Clinking on the commandButton will not show any validation error, and actionEvent will be successfully completed .
          <ice:messages/>
          <ice:form>
          <h2> Immediate </h2>
          <ice:inputText required="true" />
          <ice:commandButton value="click" immediate="true" />
          </ice:form>

          Show
          Adnan Durrani added a comment - I have tried the following test case but I wasn't be able to build svn\repo\qa\trunk\Attribute-test\inputText I have tested the immediate attribute and it working fine, it can be tested using the following // Clinking on the commandButton will show the validation error, and eat the actionEvent <ice:messages/> <ice:form> <h2> Immediate </h2> <ice:inputText required="true" immediate="true" /> <ice:commandButton value="click" immediate="true" /> </ice:form> // Clinking on the commandButton will not show any validation error, and actionEvent will be successfully completed . <ice:messages/> <ice:form> <h2> Immediate </h2> <ice:inputText required="true" /> <ice:commandButton value="click" immediate="true" /> </ice:form>
          Hide
          Adnan Durrani added a comment -

          The h:outputText is also using the ResponseWriter.
          trunk revision: 17518

          Show
          Adnan Durrani added a comment - The h:outputText is also using the ResponseWriter. trunk revision: 17518
          Hide
          Mark Collette added a comment -

          This is causing a regression with:
          http://jira.icefaces.org/browse/ICE-3534

          We should solve it using the strategy from:
          http://jira.icefaces.org/browse/ICE-3484

          Show
          Mark Collette added a comment - This is causing a regression with: http://jira.icefaces.org/browse/ICE-3534 We should solve it using the strategy from: http://jira.icefaces.org/browse/ICE-3484
          Hide
          Mark Collette added a comment -

          Several of our components extend HtmlInputText, so the change to getOnkeypress() might cause more side-effects than what has been found with SelectInputText.

          Show
          Mark Collette added a comment - Several of our components extend HtmlInputText, so the change to getOnkeypress() might cause more side-effects than what has been found with SelectInputText.
          Hide
          Mark Collette added a comment -

          Fixed the regression with changes made in ICE-3484.

          Show
          Mark Collette added a comment - Fixed the regression with changes made in ICE-3484 .
          Hide
          Mark Collette added a comment -

          Here are copied html fragments from the component-showcase of the inputSecret component renderings, from before and after the code fix.

          Before:
          <input type="password" value="" size="10" onmousedown="this.focus();" onkeypress="iceSubmit(form,this,event);iceSubmit(form,this,event);" onfocus="setFocus(this.id);" onblur="setFocus('');iceSubmitPartial(form, this, event);setFocus('');iceSubmitPartial(form,this,event); return false;" name="iceform:TxtPw" maxlength="10" id="iceform:TxtPw" class="iceInpSecrt"/>

          After:
          <input type="password" value="" size="10" onmousedown="this.focus();" onkeypress="iceSubmit(form,this,event);" onfocus="setFocus(this.id);" onblur="setFocus('');iceSubmitPartial(form,this,event); return false;" name="iceform:TxtPw" maxlength="10" id="iceform:TxtPw" class="iceInpSecrt"/>

          Show
          Mark Collette added a comment - Here are copied html fragments from the component-showcase of the inputSecret component renderings, from before and after the code fix. Before: <input type="password" value="" size="10" onmousedown="this.focus();" onkeypress="iceSubmit(form,this,event);iceSubmit(form,this,event);" onfocus="setFocus(this.id);" onblur="setFocus('');iceSubmitPartial(form, this, event);setFocus('');iceSubmitPartial(form,this,event); return false;" name="iceform:TxtPw" maxlength="10" id="iceform:TxtPw" class="iceInpSecrt"/> After: <input type="password" value="" size="10" onmousedown="this.focus();" onkeypress="iceSubmit(form,this,event);" onfocus="setFocus(this.id);" onblur="setFocus('');iceSubmitPartial(form,this,event); return false;" name="iceform:TxtPw" maxlength="10" id="iceform:TxtPw" class="iceInpSecrt"/>

            People

            • Assignee:
              Unassigned
              Reporter:
              Ken Fyten
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: