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.ke...@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.ke...@riverdynamics.com <mailto:patrick.ke...@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.ke...@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"> </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.ke...@riverdynamics.com >>> <mailto:patrick.ke...@riverdynamics.com> >>> W: www.riverdynamics.com <http://www.riverdynamics.com/> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org >> For additional commands, e-mail: user-h...@struts.apache.org >> > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org