struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lukasz Lenart <lukaszlen...@apache.org>
Subject Re: datetimepicker used in conjunction with theme=simple form
Date Mon, 07 Apr 2014 17:56:46 GMT
Right, Dojo plugin is a strange beast ;-) Looks like you found a bug,
please register an issue in JIRA. It works in Struts 2.3.15.3 but it's
broken in 2.3.16

2014-04-07 12:36 GMT+02:00 Patrick Kelly <patrick.kelly@riverdynamics.com>:
> If I include theme="dojo" on the sx:datetimepicker it throws an error
> "Attribute theme invalid for tag datetimepicker according to tld"
>
> Patrick Kelly
>
> PatrickKelly
> PrincipalConsultant
> *River**Dynamics*
>
> E: patrick.kelly@riverdynamics.com <mailto:patrick.kelly@riverdynamics.com>
> W: www.riverdynamics.com <http://www.riverdynamics.com/>
>
> On 7/04/2014 7:47 PM, Lukasz Lenart wrote:
>>
>> Define theme in <sx:datetimepicker/> as it now inherits that from <s:form>
>> tag,
>>
>> <sx:datetimepicker theme="dojo" .../>
>>
>> 2014-04-07 11:42 GMT+02:00 Patrick Kelly
>> <patrick.kelly@riverdynamics.com>:
>>>
>>> yes I have the sx:head tag - and no I can't see any javascript errors in
>>> Firebug.
>>>
>>> Patrick Kelly
>>>
>>> PatrickKelly
>>> PrincipalConsultant
>>> *River**Dynamics*
>>>
>>> E: patrick.kelly@riverdynamics.com
>>> <mailto:patrick.kelly@riverdynamics.com>
>>> W: www.riverdynamics.com <http://www.riverdynamics.com/>
>>>
>>> On 7/04/2014 7:05 PM, Lukasz Lenart wrote:
>>>>
>>>> Do you have <sx:head/> tag in your jsp? Do you see any JavaScript
>>>> errors?
>>>>
>>>> 2014-04-07 10:03 GMT+02:00 Patrick Kelly
>>>> <patrick.kelly@riverdynamics.com>:
>>>>>
>>>>> Hi, I am head butting a virtual brick wall trying to get the
>>>>> datetimepicker
>>>>> dojo widget to work with a theme=simple form.
>>>>>
>>>>> I am in the middle of upgrading a webwork app to struts2 2.3.15.3. The
>>>>> good
>>>>> news is that datetimepicker works just like I would expect it in
>>>>> hundreds
>>>>> of
>>>>> places across the migrated application but only if the form is
>>>>> theme=xhtml.
>>>>> However if the form is simple (which it is in this case), then what
>>>>> used
>>>>> to
>>>>> work "auto magically" in webwork seems a little more troublesome in
>>>>> struts
>>>>> 2. There is some critical step I am missing but am yet to figure it
>>>>> out.
>>>>>
>>>>> This is what I am doing. The page uses an iterator to populate a list
>>>>> (of
>>>>> invoice items under an invoice) and then allows the user to edit any
>>>>> item
>>>>> in
>>>>> the list by clicking an "Edit" link that appears for each item in the
>>>>> list.
>>>>>
>>>>> The <td> cell for the "Edit" link looks like:
>>>>>
>>>>> <td class="evenRow">
>>>>> <a <%=linkmouseover%> href="javascript:editInvoiceItem('<s:property
>>>>> value="id"/>', '<s:property escape="false" value="providerHtml"/>',
>>>>> '<s:property value="createDate"/>', '<s:property
>>>>> value="serviceCode"/>',
>>>>> '<s:property escape="false" value="serviceDescriptionHtml"/>',
>>>>> '<s:property
>>>>> value="units"/>', '<s:property value="cost"/>', '<s:property
>>>>> value="gstApplies"/>', '<s:property value="taxInclusive"/>');">Edit</a>
>>>>> </td>
>>>>>
>>>>> And the javascript editInvoiceItem that gets called looks like:
>>>>>
>>>>> function editInvoiceItem(id, provider, createDate, serviceCode,
>>>>> serviceDescription, units, cost, gstApplies, taxInclusive) {
>>>>>       document.getElementById("invItemId").value = id;
>>>>>       document.getElementById("provider").value = provider;
>>>>>       document.getElementById("createDate").value = createDate;
>>>>>       document.getElementById("code").value = serviceCode;
>>>>>       document.getElementById("desc").value = serviceDescription;
>>>>>       document.getElementById("units").value = units;
>>>>>       document.getElementById("cost").value = cost;
>>>>>       document.getElementById("gstApplies").value = gstApplies;
>>>>>       document.getElementById("taxInclusive").value = taxInclusive;
>>>>>       units=units.replace(/\$|\,/g,'');
>>>>>       cost=cost.replace(/\$|\,/g,'');
>>>>>       calculateLineItem();
>>>>> }
>>>>>
>>>>> And the theme=simple form that is auto populated when the user clicks
>>>>> "Edit"
>>>>> looks like...
>>>>>
>>>>> <s:form theme="simple" id="itemAdd" name="itemAdd" action="invoice"
>>>>> method="post">
>>>>>     <s:hidden name="cmd" value="addItem" />
>>>>>     <s:hidden name="objType" />
>>>>>     <s:hidden name="objId" />
>>>>>     <s:hidden name="model" />
>>>>>     <s:hidden name="invId" value="%{invoice.id}" />
>>>>>     <s:hidden name="invoice.thirdPartyName" />
>>>>>     <s:hidden name="invoice.thirdPartyAddress" />
>>>>>     <s:hidden name="invoiceItem.id" id="invItemId"/>
>>>>>     <s:hidden name="invoiceItem.provider" id="provider"
>>>>> value="addItem"/>
>>>>>     <s:hidden name="role" />
>>>>> <tr>
>>>>>     <td class="evenRow"><sx:datetimepicker id="createDate"
>>>>> displayFormat="%{getText('dateFormat')}" name="invoiceItem.createDate"
>>>>> /></td>
>>>>>     <td class="evenRow"><s:select id="code" emptyOption="true"
>>>>> name="invoiceItem.serviceCode" list="invoiceCodes"/></td>
>>>>>     <td class="evenRow"><s:textfield id="desc" size="20"
>>>>> name="invoiceItem.serviceDescription"/></td>
>>>>>     <td class="evenRow"><s:textfield onchange="calculateLineItem()"
>>>>> id="units"
>>>>> size="4" name="invoiceItem.units"/></td>
>>>>>     <td class="evenRow"><s:textfield onchange="calculateLineItem()"
>>>>> id="cost"
>>>>> size="6" name="invoiceItem.cost"/></td>
>>>>>     <td class="evenRow"><s:textfield id="gst" size="4" readonly="true"
>>>>> name="invoiceItem.gst"/></td>
>>>>>     <td class="evenRow"><s:textfield id="total" size="6"
>>>>> readonly="true"
>>>>> name="invoiceItem.total"/></td>
>>>>>     <td class="evenRow"><s:select onchange="calculateLineItem()"
>>>>> name="invoiceItem.gstApplies" id="gstApplies"
>>>>>                   emptyOption="false"
>>>>>                   list="#{'Yes':'Yes', 'No':'No'}"/></td>
>>>>>     <td class="evenRow"><s:select onchange="calculateLineItem()"
>>>>> name="invoiceItem.taxInclusive" id="taxInclusive"
>>>>>                   emptyOption="false"
>>>>>                   list="#{'No':'No', 'Yes':'Yes'}"/></td>
>>>>>     <td class="evenRow">&nbsp;</td>
>>>>>     <td class="evenRow"><s:submit theme="simple" align="left"
>>>>> value="Save"
>>>>> /></td>
>>>>> </tr>
>>>>> </s:form>
>>>>>
>>>>> There are 2 problems:
>>>>> - the field "createDate" is not populated when the user clicks the
>>>>> "Edit"
>>>>> link (while all the other non-date fields referenced in the javascript
>>>>> are)
>>>>> - and if I manually enter a new date via the datetimepicker widget and
>>>>> click
>>>>> a button to save the updated invoice item data, then I get a validation
>>>>> error saying the "createDate" field is missing
>>>>>
>>>>> So it looks like there is some extra getter/setter logic that is
>>>>> required
>>>>> for a datetimepicker in theme=simple mode that is needed for any of the
>>>>> other non-date fields and wasn't needed in webwork (probably because
it
>>>>> used
>>>>> a different date widget).
>>>>>
>>>>> Here's hoping someone can point me in the right direction.
>>>>>
>>>>> Regards - Patrick
>>>>>
>>>>> --
>>>>> Patrick Kelly
>>>>>
>>>>> PatrickKelly
>>>>> PrincipalConsultant
>>>>> *River**Dynamics*
>>>>>
>>>>> E: patrick.kelly@riverdynamics.com
>>>>> <mailto:patrick.kelly@riverdynamics.com>
>>>>> W: www.riverdynamics.com <http://www.riverdynamics.com/>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>>> For additional commands, e-mail: user-help@struts.apache.org
>>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message