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">&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.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


Reply via email to