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