Hi AppFuse people,

I'm trying to follow the Ajax tutorial [at:
http://appfuse.org/display/APF/Ajax] using a *modular* struts2 project and
am trying to figure out which version of several files I need to make the
recommended changes in.  The tutorial step I'm having trouble with is:

1b) make sure the dojo files are imported first.
To do this open your /src/main/webapp/decoraters/default.jsp file and add
this line above! all other js imports:
<s:head theme="ajax" debug="true"/> 

The problem is there's no decorators folder in my <project
root>/web/src/main/webapp folder [this is a modular project].  There *are*
several decorators folders [4, to be exact] in my project and they all have
a default.jsp but they're all under target, I feel like I'm missing
something here.  Here are the decorators folders, and hence the default.jsp,
which one do I use?

<project root>\web\target\supplierportal-webapp-1.0-SNAPSHOT\decorators
<project root>\web\target\work\webapp\decorators
<project root>\web\target\war\work\appfuse-struts-2.0.2\decorators
<project root>\web\target\war\work\appfuse-web-common-2.0.2\decorators

I'm confused by the fact that these are all under target, shouldn't there be
a version under <project root>\web\src as specified in the tutorial
instructions?  Does some jar need to be extracted or what is going on here?








mraible wrote:
> 
> What do you think about re-writing this tutorial in an AppFuse
> environment and seeing if we make it simpler?
> 
> Matt
> 
> On 9/13/07, tibi <t...@dds.nl> wrote:
>> i would like to add this to the tutorial page:
>>
>> please eval.....
>>
>> tibi
>>
>> --------------------------------------------------------------------------------------------------------
>>
>> this part is an extension on the following  fine tutorial:
>> http://cwiki.apache.org/S2WIKI/struts-2-spring-2-jpa-ajax.html
>> take care the tutorial does not do anything apart from demonstrating the
>> working of ajax. the java code is prototype only.
>>
>> this tutorial misses out on 3 things:
>> 1a) integration it within appfuse setup, taking care of the dojo files
>> 1b) integration it within appfuse setup, taking care of the importing
>> order of the js files
>> 2) getting it working with the decorator, or better without ;)
>>
>> 1a) the dojo files can't be run from the sturts.jar file.
>>
>> to solve this open the struts2-core-2.0.6.jar
>> copy the dojo folder into
>> src/main/webapp/struts/dojo
>>
>> open your web.xml and make sure the staticFIlter is including the right
>> folder:
>>     <filter>
>>         <filter-name>staticFilter</filter-name>
>>        
>> <filter-class>org.appfuse.webapp.filter.StaticFilter</filter-class>
>>         <init-param>
>>             <param-name>includes</param-name>
>>             <param-value>/struts/dojo/*</param-value>
>>         </init-param>
>>     </filter>
>>
>> 1b) make sure the dojo files are imported first.
>> to do this open your /src/main/webapp/decoraters/default.jsp file and
>> add this line above! all other js imports:
>> <s:head theme="ajax" debug="true"/>
>>
>> (otherwise it will conflict with atleast the scriptaculous.js)
>>
>> 2) make sure your ajax return string will not be decorated.
>> there are many option but i like to do this:
>> open your decorators.xml file:
>> <decorators defaultdir="/decorators">
>>     <excludes>
>>         <pattern>/*ajax=true*</pattern>
>>         <pattern>/*decorate=false*</pattern>
>>         <pattern>/struts/dojo/*</pattern> <!-- OK to remove if you're
>> not using Struts -->
>>         <pattern>/resources/*</pattern>
>>     </excludes>
>>     <decorator name="default" page="default.jsp">
>>         <pattern>/*</pattern>
>>     </decorator>
>> </decorators>
>> i added the decorate=false part. urls with this parameter will not be
>> decorated.
>>
>> so an example would be nice right:
>> below an ajaxTest.jsp page which will be the caller.
>> than an ajaxReturn.jsp page which will be the returned data.
>> i expect you can make an AjaxAction with the methods String ajax(),
>> getPersons() etc..by your self.
>> than this is connected by struts like this:
>> --------------------------------------------------------
>>         <action name="ajax" class="ajaxTest">
>>             <result>/WEB-INF/pages/employee/ajaxTest.jsp</result>
>>             <result
>> name="ajax">/WEB-INF/pages/employee/ajaxReturn.jsp</result>
>>         </action>
>>
>> -------------------------------------------------------
>> the ajaxTest.jsp:
>> <%@ taglib prefix="s" uri="/struts-tags"%>
>>     <head>
>>         <script type="text/javascript">
>>             dojo.event.topic.subscribe("/edit", function(data, type,
>> request) {
>>             alert("type: "+type);
>>             alert("data: "+data);
>>             if(type="load"){
>>                 document.getElementById("result").innerHTML=data;
>>             }
>>
>>             });
>>         </script>
>>     </head>
>>
>> <!-- URL link to struts action-->
>> <s:url id="ajaxText" action="ajax" method="ajax" >
>> <s:param name="decorate" value="false" />
>> </s:url>
>>
>> <!-- Div where content will be displayed -->
>> <s:div theme="ajax" id="weather" href="${ajaxText}">
>>     loading content... from the ajax action the ajax method is called.
>> than the ajaxReturn.jsp is rendered here.
>> </s:div>
>>
>>
>> <p>Persons</p>
>> <s:if test="persons.size > 0">
>>     <table>
>>         <s:iterator value="persons">
>>             <tr id="row_<s:property value="id"/>">
>>                 <td>
>>                     <s:property value="firstName" />
>>                 </td>
>>                 <td>
>>                     <s:property value="lastName" />
>>                 </td>
>>                 <td>
>>                 <!-- call the remove method on the ajax action no
>> return-->
>>                     <s:url id="removeUrl" action="ajax" method="remove">
>>                         <s:param name="id" value="id" />
>>                         <s:param name="decorate" value="false" />
>>                     </s:url>
>>                     <s:a href="%{removeUrl}" theme="ajax" >Remove</s:a>
>>
>>                     <!-- call the edit method an the ajax action. the
>> result (ajaxResult.jps)
>>                     will be handed to the edit javascript mothed
>> attached to dojo (above) -->
>>                     <s:url id="editUrl" action="ajax" method="ajax">
>>                         <s:param name="id" value="id" />
>>                         <s:param name="decorate" value="false" />
>>                     </s:url>
>>                     <s:a href="%{editUrl}" id="a_%{id}" theme="ajax"
>> notifyTopics="/edit">Edit</s:a>
>>                 </td>
>>                 <td>
>>                  ajax!remove.html?id=2 remove me no ajax 
>>                 </td>
>>             </tr>
>>         </s:iterator>
>>     </table>
>> </s:if>
>>
>> <hr>
>> <div id=result></div>
>> ------------------------------------------------------------------------------------------------------------------------------
>> the ajaxResult.jsp:
>> <%@ taglib prefix="s" uri="/struts-tags"%>
>> Make some nice form here. Now show all persons.
>> <s:iterator value="persons">
>> <table><tr><td><s:property value="firstName" /></td>
>> <td><s:property value="lastName" /></td>
>> </tr>
>> </table>
>>     </s:iterator>
>> ------------------------------------------------------------------------------------------------------------------------
>> ok here is my action to:
>> package nl.incipio.match.webapp.action;
>>
>> import java.util.List;
>>
>> import org.appfuse.model.User;
>>
>> import com.opensymphony.xwork2.Preparable;
>>
>> import nl.incipio.match.util.MyBaseAction;
>>
>> public class AjaxTestAction extends MyBaseAction implements Preparable {
>>     private static final long serialVersionUID = 378605805550104346L;
>>
>>     private List<User>        persons;
>>
>>     private Long              id;
>>
>>     @Override
>>     public String execute() throws Exception {
>>         log.debug("just getting the stuf");
>>         persons = (List<User>) getRequest().getAttribute("persons");
>>         if (persons == null) {
>>             log.debug("just ones please");
>>             persons = userManager.getUsers(null);
>>             getRequest().setAttribute("persons", persons);
>>         } else {
>>             log.debug("persons" + persons.size());
>>         }
>>         return SUCCESS;
>>     }
>>
>>     public List<User> getPersons() {
>>         return persons;
>>     }
>>
>>     public void setPersons(List<User> persons) {
>>         this.persons = persons;
>>     }
>>
>>     public String remove() throws Exception {
>>         log.debug("do some removing here when i feel like it id:" + id);
>>         if (persons != null) {
>>             log.debug("before persons" + persons.size());
>>             persons.remove((id.intValue() - 1));
>>             log.debug("after persons" + persons.size());
>>         }
>>         return SUCCESS;
>>     }
>>
>>     public String save() throws Exception {
>>         log.debug("do some saving here when i feel like it");
>>         return execute();
>>     }
>>
>>     public String ajax() {
>>         log.debug("ajax is doing something id:"+id);
>>         return "ajax";
>>     }
>>
>>     public String edit() throws Exception {
>>         log.debug("do some editing here when i feel like it");
>>         return execute();
>>     }
>>
>>     public Long getId() {
>>         return id;
>>     }
>>
>>     public void setId(Long id) {
>>         this.id = id;
>>     }
>>
>>     public void prepare() throws Exception {
>>         log.debug("i'm getting prepared!!!");
>>
>>     }
>> }
>> ------------------------------------------------------------------
>> spring config in applicationContext.xml:
>>      <bean id="ajaxTest"
>> class="nl.incipio.match.webapp.action.AjaxTestAction">
>>         <property name="userManager" ref="userManager"/>
>>     </bean>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
>> For additional commands, e-mail: users-h...@appfuse.dev.java.net
>>
>>
> 
> 
> -- 
> http://raibledesigns.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
> For additional commands, e-mail: users-h...@appfuse.dev.java.net
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/dojo-tutorial-extension-tp12654762s2369p22599937.html
Sent from the AppFuse - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net

Reply via email to