You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Roger Varley <ro...@googlemail.com> on 2007/05/09 16:27:27 UTC

[S2] Ajax Forms

Hi

Is it possible to insert/update the value of a <s:textfield> tag in a
form using Ajax? I've listed the data entry jsp and the Ajax response
jsp page below. When the form is loaded at start up, I see the text
values and an empty text field from the ajax response. After entering
a value into productCode field, I see the text, the <s:property> value
is displayed, but the <s:textfield> stays empty.

Regards
Roger

<!-- Data Entry jsp -->

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
    <head>
        <title>Edit Sales Order with Static Form</title>
        <s:head theme="ajax" debug="true"/>
        <script type="text/javascript">
            function filterProductCode(field) {
            return field.name=="orderDetailLine.productCode";
            }
        </script>
    </head>
    <body>
        <s:text name="Account Number"/>
        <s:property value="order.header.accountNumber"/>
        <br>
        <s:text name="Order Number"/>
        <s:property value="order.header.orderNumber"/>
        <br>

                <s:div name="detailLines" cssClass="detailLines">
                    <s:iterator value="order.details" status="status">
                        <s:set name="indexValue" value="#status.index"/>


                        <s:textfield
name="order.details[%{#status.index}].productCode"
value="%{productCode}" theme="simple" disabled="true"/>
                        <s:textfield
name="order.details[%{#status.index}].productDescription"
value="%{productDescription}" theme="simple" disabled="true"/>
                        <s:textfield
name="order.details[%{#status.index}].quantity" value="%{quantity}"
theme="simple" disabled="true"/>
                        <br/>

                    </s:iterator>
                </s:div>
                <s:div name="detailEntry" cssClass="detailEntry">
                    <s:url id="getProductInfoURL" action="ListProductInfo"/>
                    <s:form id="form" method="post" action="EditOrder"
theme="simple">

                    <s:textfield name="orderDetailLine.productCode"
                                 label="productCode"
                                 id="productCode"

onchange="dojo.event.topic.publish('getProductInfoTopic',
this.value);"/>
                    <s:div name="updateDiv" theme="ajax"
                           loadingText="Hang on a sec .... "
                           href="%{getProductInfoURL}"
                           formId="form"
                           listenTopics="getProductInfoTopic"
                           formFilter="filterProductCode">

                     </s:div>


                   <s:textfield name="orderDetailLine.quantity"
value="%{quantity}"/>

                <s:submit/>
                </s:form>
                </s:div>


    </body>

</html>

<!-- Ajax Response JSP -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>

This text should appear in the div<br/>
The following is the property value<br/>
<s:property value="productInfo.productDescription"/>
<s:textfield name="productInfo.productDescription"
value="%{productDescription}"/>

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