You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2013/11/01 08:18:17 UTC

[jira] [Commented] (ISIS-580) Date fields are cleared when tabbing through other fields.

    [ https://issues.apache.org/jira/browse/ISIS-580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13811102#comment-13811102 ] 

Dan Haywood commented on ISIS-580:
----------------------------------

The problem is that all fields get repainted (by being added to the AjaxTarget) when tabbing through a fields, whereas in fact only the conditional choices fields should be repainted.

Adding a date field to AjaxTarget meant that it got repainted and the value on it lost (because that value was never "submitted" to be flushed to the underlying Java model).

The fix is to only add those fields that are changed.

~~~
how I figured this out: I used the Wicket Ajax panel to watch what was going on, and noticed that seemingly the entire form was being repainted (see below).  I then delved into the code looking for any behaviours/callbacks that interacted with the form, and came across the anonymous subclass of org.apache.wicket.xxx.AjaxFormComponentUpdatingBehavior that is in the org.apache.isis.xxx.ScalarPanellAbstract's 'buildGui().





INFO: focus set on scalarValue17
INFO: focus set on scalarValue17
INFO: focus removed from scalarValue17
INFO: focus set on scalarValue1b
INFO: focus removed from scalarValue1b
INFO: focus set on scalarValue19
INFO: focus set on scalarValue19
INFO: Received ajax response (7299 characters)
INFO: 
<?xml version="1.0" encoding="UTF-8"?><ajax-response><component id="scalarNameAndValue1f" ><![CDATA[<div id="scalarNameAndValue1f" class="first-field"> 
            <div class="stringPanel scalarNameAndValueComponentType"> 
                <label for="scalarValue1a" class="mandatory" title=""> 
                      <span class="scalarName">String 1</span> 
                      <span class="scalarValue"> 
                          <input type="text" name="parameters:1:scalarNameAndValue:scalarIfRegular:scalarValue" value="a" id="scalarValue1a" title=""/> 
                          <span>
  
</span> 
                         
                      </span> 
                </label> 
                 
            </div> 
        </div>]]></component><component id="scalarNameAndValue20" ><![CDATA[<div id="scalarNameAndValue20"> 
            <div class="jodaLocalDatePanel scalarNameAndValueComponentType"> 
                <label for="scalarValue17" class="mandatory" title=""> 
                      <span class="scalarName">Local Date 1</span> 
                      <span class="scalarValue"> 
                          <input type="text" name="parameters:2:scalarNameAndValue:scalarIfRegular:scalarValue" value="" id="scalarValue17" title=""/> 
                          <span>
  
</span> 
                         
                      </span> 
                </label> 
                 
            </div> 
        </div>]]></component><component id="scalarNameAndValue21" ><![CDATA[<div id="scalarNameAndValue21"> 
            <div class="stringPanel scalarNameAndValueComponentType"> 
                <label for="scalarValue1b" class="mandatory" title=""> 
                      <span class="scalarName">String 2</span> 
                      <span class="scalarValue"> 
                          <input type="text" name="parameters:3:scalarNameAndValue:scalarIfRegular:scalarValue" value="b" id="scalarValue1b" title=""/> 
                          <span>
  
</span> 
                         
                      </span> 
                </label> 
                 
            </div> 
        </div>]]></component><component id="scalarNameAndValue22" ><![CDATA[<div id="scalarNameAndValue22"> 
            <div class="jodaLocalDatePanel scalarNameAndValueComponentType"> 
                <label for="scalarValue19" class="mandatory" title=""> 
                      <span class="scalarName">Local Date 2</span> 
                      <span class="scalarValue"> 
                          <input type="text" name="parameters:4:scalarNameAndValue:scalarIfRegular:scalarValue" value="" id="scalarValue19" title=""/> 
                          <span>
  
</span> 
                         
                      </span> 
                </label> 
                 
            </div> 
        </div>]]></component><component id="scalarNameAndValue23" ><![CDATA[<div id="scalarNameAndValue23"> 
            <div class="stringPanel scalarNameAndValueComponentType"> 
                <label for="scalarValue1c" class="mandatory" title=""> 
                      <span class="scalarName">String 3</span> 
                      <span class="scalarValue"> 
                          <input type="text" name="parameters:5:scalarNameAndValue:scalarIfRegular:scalarValue" value="" id="scalarValue1c" title=""/> 
                          <span>
  
</span> 
                         
                      </span> 
                </label> 
                 
            </div> 
        </div>]]></component><header-contribution encoding="wicket1" ><![CDATA[<head xmlns:wicket="http://wicket.apache.org"><script type="text/javascript" src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-1.10.1-ver-1380784961775.js"></script>
<script type="text/javascript" src="../resource/com.googlecode.wicket.jquery.core.resource.JQueryUIResourceReference/jquery-ui-1.10.3.custom-ver-1380784933027.js"></script>
<script type="text/javascript" src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-event-jquery-ver-1380784961775.js"></script>
<script type="text/javascript" src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-ver-1380784961775.js"></script>
<script type="text/javascript" src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug-ver-1380784961775.js"></script>
<script type="text/javascript" id="wicket-ajax-debug-enable">
/*<![CDATA[*/
Wicket.Ajax.DebugWindow.enabled=true;
/*]^]^>*/
</script>
<script type="text/javascript" id="wicket-ajax-base-url">
/*<![CDATA[*/
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.isis.viewer.wicket.ui.pages.action.ActionPage?pageType=ACTION&amp;amp%3BactionSingleResultsMode=REDIRECT&amp;amp%3BobjectOid=dom.todo.ToDoItems:1&amp;amp%3BactionType=USER&amp;amp%3BactionOwningSpec=dom.todo.ToDoItems&amp;amp%3BactionId=testIt%28java.lang.String,org.joda.time.LocalDate,java.lang.String,org.joda.time.LocalDate,java.lang.String%29&amp;amp%3BpageTitle=Test+It&amp;amp%3BactionMode=PARAMETERS";
/*]^]^>*/
</script>
<link rel="stylesheet" type="text/css" href="../resource/org.apache.isis.viewer.wicket.ui.components.scalars.string.StringPanel/StringPanel-ver-1382701539716.css" />
<link rel="stylesheet" type="text/css" href="../resource/org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDatePanel/JodaLocalDatePanel-ver-1382701539787.css" />
</head>]]></header-contribution><evaluate encoding="wicket1"><![CDATA[(function(){Wicket.Ajax.ajax({"u":"../page?3-1.IBehaviorListener.2-action-parameters-inputForm-parameters-1-scalarNameAndValue-scalarIfRegular-scalarValue","e":"change","c":"scalarValue1a","ad":true,"m":"POST"});})();(function(){Wicket.Ajax.ajax({"u":"../page?3-1.IBehaviorListener.4-action-parameters-inputForm-parameters-2-scalarNameAndValue-scalarIfRegular-scalarValue","e":"change","c":"scalarValue17","ad":true,"m":"POST"});})();(function(){Wicket.Ajax.ajax({"u":"../page?3-1.IBehaviorListener.2-action-parameters-inputForm-parameters-3-scalarNameAndValue-scalarIfRegular-scalarValue","e":"change","c":"scalarValue1b","ad":true,"m":"POST"});})();(function(){Wicket.Ajax.ajax({"u":"../page?3-1.IBehaviorListener.4-action-parameters-inputForm-parameters-4-scalarNameAndValue-scalarIfRegular-scalarValue","e":"change","c":"scalarValue19","ad":true,"m":"POST"});})();(function(){Wicket.Ajax.ajax({"u":"../page?3-1.IBehaviorListener.2-action-parameters-inputForm-parameters-5-scalarNameAndValue-scalarIfRegular-scalarValue","e":"change","c":"scalarValue1c","ad":true,"m":"POST"});})();(function(){jQuery(function() { jQuery('#scalarValue17').datepicker({ "onSelect": function (dateText,inst) {
var attrs = {"u":"../page?3-1.IBehaviorListener.3-action-parameters-inputForm-parameters-2-scalarNameAndValue-scalarIfRegular-scalarValue","c":"scalarValue17","m":"POST","dep":[function(attrs){var result = []^;result = result.concat(Wicket.Form.serializeElement(Wicket.$('scalarValue17')));return result;}]^};
var params = {'dateText': dateText};
attrs.ep = params;
Wicket.Ajax.ajax(attrs);
}
, "showWeek": true, "numberOfMonths": 3, "changeYear": true, "dateFormat": "dd-mm-yy", "changeMonth": true, "showButtonPanel": true }); });})();(function(){jQuery(function() { jQuery('#scalarValue19').datepicker({ "onSelect": function (dateText,inst) {
var attrs = {"u":"../page?3-1.IBehaviorListener.3-action-parameters-inputForm-parameters-4-scalarNameAndValue-scalarIfRegular-scalarValue","c":"scalarValue19","m":"POST","dep":[function(attrs){var result = []^;result = result.concat(Wicket.Form.serializeElement(Wicket.$('scalarValue19')));return result;}]^};
var params = {'dateText': dateText};
attrs.ep = params;
Wicket.Ajax.ajax(attrs);
}
, "showWeek": true, "numberOfMonths": 3, "changeYear": true, "dateFormat": "dd-mm-yy", "changeMonth": true, "showButtonPanel": true }); });})();]]></evaluate></ajax-response>
INFO: returned focused element: [object HTMLInputElement]
INFO: returned focused element: [object HTMLInputElement]
INFO: Response processed successfully.
INFO: Calling focus on scalarValue19
INFO: focus set on scalarValue19
INFO: focus set on scalarValue19
INFO: focus removed from scalarValue19
INFO: focus set on scalarValue19
INFO: focus removed from scalarValue19
INFO: focus set on scalarValue19
INFO: focus removed from scalarValue19

> Date fields are cleared  when tabbing through other fields.
> -----------------------------------------------------------
>
>                 Key: ISIS-580
>                 URL: https://issues.apache.org/jira/browse/ISIS-580
>             Project: Isis
>          Issue Type: Bug
>          Components: Viewer: Wicket
>    Affects Versions: viewer-wicket-1.3.0
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>             Fix For: viewer-wicket-1.4.0
>
>
> To reproduce, add following (eg to ToDoItems service):
>     public void testIt(
>             String x,
>             LocalDate d,
>             String y,
>             String y2,
>             LocalDate d2,
>             String z) {
>     }
> Enter a date for 'd', then enter a value for either 'y' or 'y2'; the date 'd' will be blanked out.



--
This message was sent by Atlassian JIRA
(v6.1#6144)