I implemented straight AJAX:
I have a element that has a onclick event defined. The onclick event calls a
JavaScript function.
So my element looks like this:
<span onclick=" addToExpandedNodeList(this.id)" />
And the Javascript functions (one is used the get the XmlHttpObject needed
to make AJAX calls):
// Get the XmlHttpObject to use for making AJAX calls
function getXmlHttpObject() {
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
return xmlHttp;
}
function addToExpandedNodeList(id) {
var xmlHttpObj = getXmlHttpObject();
if (xmlHttpObj) {
var d = new Date();
var t = d.getTime();
xmlHttpObj.open("GET","display/display.action?idToChange=" + id +
"&time=" + t);
xmlHttpObj.onreadystatechange = function() {
if (xmlHttpObj.readyState == 4) {
//alert("returned");
}
};
xmlHttpObj.send();
} else {
alert("Could not get the XmlHttpObj!!");
}
}
The XmlHttpObject is used to do the call to the server. I use it to open the
display action (with namespace display, that is why display/display.action)
and pass it an id. You'll also notice that I pass the time across as without
it, the browser does not want to refresh (can't remember which one, think it
was IE).
When the action returns a result, you will handle it with:
xmlHttpObj.onreadystatechange = function() {
if (xmlHttpObj.readyState == 4) {
//alert("returned");
}
};
You'll see that I commented a line there where I have an alert. I don't have
to set anything when the action returns the result, so I don't use this.
You might want to think of using the AJAX theme on your components though.
For that you will have to read the tutorials on the pages I sent you
originally.
Jo
-----Original Message-----
From: Johnson nickel [mailto:[EMAIL PROTECTED]
Sent: 31 January 2008 08:42 AM
To: [email protected]
Subject: RE: Struts 2 onchange event to get values from databases
Thanks for your quick response.
I have created Jsp and action and struts.xml. you are mistaken
me(imlazy), i'm not
asking the code for my requirement.
I want to display the userdetails, at the time of Onchange event.
I don't want
to use javascript. My details are getting from db. If you provide some
examples in AJAX
than it will be helpful.
Johan Snyman wrote:
>
> Dude,
>
> Me thinks you're lazy for not going through the tutorials supplied on the
> documentation site: http://struts.apache.org/2.x/docs/home.html
>
> You'll have to set up 'n struts.xml file (saved in WEB-INF/classes folder)
> that looks something like this:
>
> <!DOCTYPE struts PUBLIC
> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
> "http://struts.apache.org/dtds/struts-2.0.dtd">
> <struts>
> <!-- <constant name="struts.devMode" value="false" /> -->
> <constant name="struts.enable.DynamicMethodInvocation" value="false"
> />
>
> <package name="mypackage " extends="struts-default">
>
> <action name="display" class="com.imlazy.DisplayUserDetails">
> <result>userdetails,jsp</result>
> </action>
> </struts>
>
> You'll have to implement the action class, which has the values you want
> to
> pass to your jsp declared with getters and setter for each of them
> (JavaBean
> style):
>
> package com.imlazy;
>
> import ******;
>
> @SuppressWarnings("serial")
> public class DisplayUserDetails extends ActionSupport {
>
> private String userName;
> private String userAddress;
> private List<String> userNameList;
> // etc
>
> @Override
> public String execute() throws Exception {
> // HERE YOU DO YOUR DB ACCESS AND WHATEVER TO POPULATE YOUR FIELDS
> }
>
> public String getUserName() {
> return userName;
> }
>
> public void setUsername(String userName) {
> this.userName = username;
> }
>
> // Other getters and setters
> }
>
> And finally your jsp that will be displaying the fields:
>
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
> <%@ taglib prefix="s" uri="/struts-tags" %>
>
> <html>
> <head>
> <titleUser Details</title>
> </head>
>
> <body>
> <s:form>
> <s:combobox label="Users" list="HERE YOU MUST DEFINE THE LIST"
> headerKey="-1" />
>
> <s:textfield key="userName">
> <!-- HERE FOLLOWS YOUR OTHER FIELD -->
> </s:form>
> </body>
> </html>
>
>
>
> This is just touching what you need to do and know. Most important is to
> understand. Go through the tutorial, know what you need to get an action
> to
> display what you want to display (choose one user and just display the
> values for that user). Only then start thinking about AJAX and how you
> should be changing what is displayed as the combobox is changed.
>
>
>
> Jo
>
>
>
>
>
> -----Original Message-----
> From: Johnson nickel [mailto:[EMAIL PROTECTED]
> Sent: 31 January 2008 07:35 AM
> To: [email protected]
> Subject: RE: Struts 2 onchange event to get values from databases
>
>
>
> I am very new to Struts 2 and Ajax. If u have any samples please send it.
>
> Johan Snyman wrote:
>>
>> Hi Johnson (and others),
>> I'm not really as retarded as I sound in the previous mail, just
>> distracted
>> while I was composing the mail. Please contact me if you find it as
>> difficult to follow as I did after reading the first reply...
>>
>> Jo
>>
>>
>>
>>
>> -----Original Message-----
>> From: Johan Snyman [mailto:[EMAIL PROTECTED]
>> Sent: 30 January 2008 03:43 PM
>> To: 'Struts Users Mailing List'
>> Subject: RE: Struts 2 onchange event to get values from databases
>>
>> Hi Johnson,
>>
>> I'm no Struts expert but from my experience you have two ways of
>> implementing what you want to achieve.
>>
>> 1. You can populate your dropdown box and have the fields empty. On your
>> element you can set the onchange to call a javascript function that calls
>> the same action, but passing it the content of your combobox, to do your
>> database lookup on the server side and then pass the info to your
>> userdetails.jsp where you can set your fields.
>>
>> 2. You can use AJAX to do the call asynchrononously, that is the value is
>> passed to an action on the server and without the values passed back and
>> filled into your fields. Nowadays you'll find plenty of tutorials and
>> examples out there. Check out the following:
>>
>> http://struts.apache.org/2.x/docs/ajax.html
>> (the official Struts AJAX guide)
>>
>> http://www.roseindia.net/struts/struts2/struts2ajax/index.shtml
>> (easy login example)
>>
>>
>
http://www.javaworld.com/javaworld/jw-08-2007/jw-08-ajaxtables.html?fsrc=rss
>> -index
>> (although is a rather tough example to follow if you're new to AJAX)
>>
>> http://www.planetstruts.org/struts2-showcase/showcase.action
>> (showcase examples)
>>
>> Hope this helps
>>
>> Jo
>>
>>
>>
>> -----Original Message-----
>> From: Johnson nickel [mailto:[EMAIL PROTECTED]
>> Sent: 30 January 2008 03:26 PM
>> To: [email protected]
>> Subject: Struts 2 onchange event to get values from databases
>>
>>
>> Hi All,
>>
>> I am using Struts 2 application, i have userdetails.jsp its
>> contains five text fields.
>> two buttons save and update. In my action i have written save() method
>> and
>> update() method.
>>
>> In my jsp one drop down box its contains users. At the time of onchange
>> event to populate the text fileds values from databases.
>> can u give me any solutions how to do this?
>>
>> --
>> View this message in context:
>>
>
http://www.nabble.com/Struts-2-onchange-event-to-get-values-from-databases-t
>> p15182158p15182158.html
>> Sent from the Struts - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>> No virus found in this incoming message.
>> Checked by AVG Free Edition.
>> Version: 7.5.516 / Virus Database: 269.19.16/1250 - Release Date:
>> 2008/01/29
>> 10:20 PM
>>
>>
>> No virus found in this outgoing message.
>> Checked by AVG Free Edition.
>> Version: 7.5.516 / Virus Database: 269.19.16/1250 - Release Date:
>> 2008/01/29
>> 10:20 PM
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>> No virus found in this incoming message.
>> Checked by AVG Free Edition.
>> Version: 7.5.516 / Virus Database: 269.19.16/1250 - Release Date:
>> 2008/01/29
>> 10:20 PM
>>
>>
>> No virus found in this outgoing message.
>> Checked by AVG Free Edition.
>> Version: 7.5.516 / Virus Database: 269.19.16/1250 - Release Date:
>> 2008/01/29
>> 10:20 PM
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>
> --
> View this message in context:
>
http://www.nabble.com/Struts-2-onchange-event-to-get-values-from-databases-t
> p15182158p15198502.html
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.516 / Virus Database: 269.19.16/1250 - Release Date:
> 2008/01/29
> 10:20 PM
>
>
> No virus found in this outgoing message.
> Checked by AVG Free Edition.
> Version: 7.5.516 / Virus Database: 269.19.16/1250 - Release Date:
> 2008/01/29
> 10:20 PM
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
--
View this message in context:
http://www.nabble.com/Struts-2-onchange-event-to-get-values-from-databases-t
p15182158p15199062.html
Sent from the Struts - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.19.16/1250 - Release Date: 2008/01/29
10:20 PM
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.19.16/1250 - Release Date: 2008/01/29
10:20 PM
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]