Is this Struts1 or Struts2? That will (potentially) change the mechanics a little, but in theory, sure, it's easy to do. Assume Struts1 for a moment...

1. User triggers event on the page that does the delete. This causes a Javascript function to be executed.
2. That function makes an AJAX request, using your favorite library.
3. Action is invoked (AJAX just requests a URL after all, which is what a Struts action mapping is) and does its work. 4. Action forwards to a JSP as is typical. This JSP can be something as simple as this:

<% if (request.getAttribute("deleted") != null) { %>
<%=request.getAttribute("nodeID")%>
<% } else { %>
NOT DELETED
<% } %>

Assuming the action put the "deleted" attribute in request if the delete was accomplished, as well as the ID of the ndoe that was deleted, that's all there is to it.

5. The response is returned to the client, and being an AJAX request, some Javascript function that you specified at the time the call was made, the AJAX callback function, is executed. Passed to it will be the response from the server. So, you simply do a quick check to see which string got returned, and if its != "NOT DELETED", call whatever delete method likely exists for the tree widget your using (most provide this), passing it the response from the server, which is in fact the ID of the node to delete. No need to rebuild the tree, no need to re-render the page, no need to return an updated set of data, just delete the one node you need to.

That's all there is to it. Now, you don't even need the JSP if you don't want to have it, you can write the same response out from the Action, but using a JSP, even for something as trivial as this, tends to be more flexible and easier to toy with. AJAX always works this way, basically, so if your talking Struts2 you may do some things slightly different because there's some built-in AJAX support that might hide some of this from you and make it easier, but basically it's the same underlying flow.

Frank

--
Frank W. Zammetti
Founder and Chief Software Architect
Omnytex Technologies
http://www.omnytex.com
AIM/Yahoo: fzammetti
MSN: [EMAIL PROTECTED]
Author of "Practical Ajax Projects With Java Technology"
 (2006, Apress, ISBN 1-59059-695-1)
and "JavaScript, DOM Scripting and Ajax Projects"
 (2007, Apress, ISBN 1-59059-816-4)
Java Web Parts - http://javawebparts.sourceforge.net
 Supplying the wheel, so you don't have to reinvent it!

Session A Mwamufiya wrote:
The jsp page sends a delete request to the struts action that determines 
whether or not the object associated with the node can be deleted from the 
database.  The struts action removes the object from the database if all is 
well, and at this point, I would like to have the struts action notify the jsp 
that it can remove the node from the tree.  Is there a way to set it up so that 
the jsp page gets a return value from the action and javascript within the jsp 
page removes the node accordingly?

Thanks,
Session


3. Generate JavaScript in the Ajax result that removes the node (and
re-renders the tree if necessary; I don't know how all that works) and
execute it.

--- Chris Pratt <[EMAIL PROTECTED]> wrote:

You can use the Rhino JavaScript interpreter to execute JavaScript from
Java, but I don't think that's actually what you are looking for.

It sounds like you are asking "How to I run some JavaScript in the client's browser when something changes on the server?" And the short answer is, you can't. At least not directly.

Remember, the web uses a Request/Response model where the Browser makes a
request and the server returns a response, so there is no simple way for
the server to initiate something happening in the browser.

Two options I can see are:

1. Have the browser make an AJAX request and the server can return the new DOM tree without the removed node

2. Have the browser resubmit the request and the new page can be built without the removed node.

(*Chris*)

On 9/6/07, Session A Mwamufiya <[EMAIL PROTECTED]> wrote:
Hi,

Does anyone have an example of how to call a
javascript function from a java class?  I want to call a javascript
function that removes a node from a tree after a java class removed it
from the database.
Thanks, Session



---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED] For additional
commands, e-mail: [EMAIL PROTECTED]



--------------------------------------------------------------------- To
unsubscribe, e-mail: [EMAIL PROTECTED] For additional
commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]







---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to