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 09:47:22 GMT
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


Mime
View raw message