Tapstry 中 异步提交form请求的与页面响应(原创)

在Tapetry中异步提交form标单请求需要用到EventListener方法,要做到这一点其中有几个比较关键的参数:
1:elements(String [] ) 监听对象 即你所监听的dom对象,同属的讲就是你在 jwcid="XX@XX" 中"@"之前的部分。
2:targets(String []) 同上,与之不同的是在使用时该dom对象所在的标单会自动提交
3:events(String []) 监听的促发时间,改参数可以使用两套事件,一套是标准的js事件,另一套是dojo ajax框架自定的事件库。在考虑浏览器兼容的情况下建议使用dojo自定义的事件库。
此外EventListener方法是用注释方法注入到类中的,其做法如下:
@EventListener(param1,param2,...)
public void aaa(){
 .......
}
   当然要实现异步提交表单光靠EventListener方法是不够的,这里要用到一个form的关键属性 ascny 将其设置为 true,同时一般情况下,
对于异步提交的标单不需要listener属性,如果设置了,值得注意的是他的提交顺序,在T4.1.5中他是先提交EventListener所注释的方法,在提交listener所指向的方法。
    在提交表单后如果想异步刷新页面上某部分的内容需要用到的重要对象是ResponseBuilder。该对象可以在IRequestCycle中得到,同 时要注意的是貌似只有T4.1.5之后才能使用该对象。ok如果你将异步提交的标单中的值在页面上另一块地方异步刷新就要用到以下方法
    updateComponent(String compoentId) 你只要将该组件所用到的数据重新设置之后在调用该方法,就可以了。还要提醒大家一点,利用
Tapestry实现异步刷新的时候,对于输出之后的页面上不存在的dom对象是不起作用的。比如你再编写模版的时候用到了if组件,控制了某个
insert组件的现实与否,同时你再类文件中对该insert组件编写了异步
刷新代码,这就有问题了,当不符合if条件是改insert组件的内容(当然包括关键的id)是不会在render之后输出在客户端页面的,因此您之前在类中编写的异步刷新该insert组件的内容是不会起作用的。

以上就是一点工作中累积的小经验,希望对大家有所帮助 副代码如下:
showAccount.html


 
    ShowAccount.html
   
    < http-equiv="keywords" content="keyword1,keyword2,keyword3">
    < http-equiv="deion" content="this is my page">
    < http-equiv="content-type" content="text/html; charset=UTF-8">
     
   
   
    < src="/js/js.js" language="java">
 
 
 
  

  
:>>

  
   

   
   
   

   

   

       

               
  • :

  •            

  •            
               

  •        

   

   
    
       
       
    
    
         
         
    
    
       
       
    
    
       
        
    
    
       
         
     
     
       
         
     
    
       
       
    
     
组别:
       
       
IB:
         
         
账户名称:
       
       
是否可交易:
        
        
        

        
        
        

        
NOPL:
         
         
基本货币:
             
         
平衡方式:
       
        
        

        
        
        

        
        
        

        
        
        

        
        
        

       

     
   

 


showAccount.page

  "-//Apache Software Foundation//Tapestry Specification 4.1//EN"
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_1.dtd">





showAccount.java
package allone.MTP4.admin.tapestry.page.account;
import java.util.ArrayList;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.annotations.EventListener;
import org.apache.tapestry.annotations.InjectObject;
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.record.PropertyChangeObserver;

import allone.MTP4.admin.datastructure.AdminAccountStrategy;
import allone.MTP4.admin.datastructure.AdminUserLogin;
import allone.MTP4.admin.tapestry.selectmodels.AccountStrategySelectionModels;
import allone.MTP4.admin.tapestry.selectmodels.UserLoginSelectModels;
import allone.MTP4.admin.web.session.AdminSession;
import allone.MTP4.comm.datastruct.DB.AccountStrategy;
import allone.MTP4.comm.datastruct.DB.UserLogin;


public abstract class ShowAccount extends BasePage  {

    @Override
    public String getClientId() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void setClientId(String arg0) {
        // TODO Auto-generated method stub

    }
   
    @InjectObject("service:tapestry.globals.ServletContext")
    public abstract ServletContext getServletContext();

    @InjectObject("service:tapestry.globals.HttpServletRequest")
    public abstract HttpServletRequest getHttpServletRequest();
   
    public abstract String getSearchAeid();
    public abstract void setSearchAeid(String searchAeid);
    public abstract String getSearchAccount();
    public abstract void setSearchAccount(String searchAccount);
    public abstract UserLoginSelectModels getUserLoginSelections();
    public abstract void setUserLoginSelections(UserLoginSelectModels userLoginSelections);
    public abstract AdminUserLogin getUserLogin();
    public abstract void setUserLogin(AdminUserLogin userLogin);
    public abstract AccountStrategySelectionModels getAccountStragetySelections();
    public abstract void setAccountStragetySelections(AccountStrategySelectionModels asModel);
    public abstract AdminAccountStrategy getAccountStragety();
    public abstract void setAccountStragety(AdminAccountStrategy accountStragety);
    public abstract String getHasAccountMsg();
    public abstract void setHasAccountMsg(String hasAccountMsg);
    public abstract String getHasUserMsg();
    public abstract void setHasUserMsg(String hasUserMsg);
    public abstract AdminAccountStrategy getShowAccount();
    public abstract void setShowAccount(AdminAccountStrategy showAccount);
   
    public PropertyChangeObserver getPropertyChangeObserver() {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public void finishLoad() {
        // TODO Auto-generated method stub
        AdminSession session =AdminSession.getAdminSession( this.getHttpServletRequest().getSession());
        if(session.get_TL_Low_Value("asModel")==null){
            ArrayList adminAccountStrategys = new ArrayList();
            AccountStrategy as = new AccountStrategy();
            as.setAccount(0);
            AdminAccountStrategy aas = new AdminAccountStrategy();
            aas.setAccountStrategy(as);
            adminAccountStrategys.add(aas);
            AccountStrategySelectionModels asModel = new AccountStrategySelectionModels(adminAccountStrategys);
            session.set_TL_Low_Value("asModel", asModel);
            this.setAccountStragetySelections(asModel);
        }else{
            this.setAccountStragetySelections((AccountStrategySelectionModels)session.get_TL_Low_Value("asModel"));
        }
       
        if(session.get_TL_Low_Value("ulModel")==null){
            ArrayList userLogins = new ArrayList();
            UserLogin ul = new UserLogin();
            ul.setAeid("");
            AdminUserLogin aul = new AdminUserLogin();
            aul.setUserLogin(ul);
            userLogins.add(aul);
            UserLoginSelectModels ulModels = new UserLoginSelectModels(userLogins);
            session.set_TL_Low_Value("ulModel", ulModels);
            this.setUserLoginSelections(ulModels);
        }else{
            this.setUserLoginSelections((UserLoginSelectModels)session.get_TL_Low_Value("ulModel"));
        }
        AccountStrategy as = new AccountStrategy();
        as.setAccount(0);
        AdminAccountStrategy showAccount = new AdminAccountStrategy();
        showAccount.setAccountStrategy(as);
        this.setShowAccount(showAccount);
        this.setHasAccountMsg("display:none");
        this.setHasUserMsg("display:none");
        //System.out.println("ccc");
    }
   
    public void linkAMDeposit(){
       
    }
   
    public void inkAddNewCurrent(){
       
    }
   
    @EventListener(targets="padAeid",events="")
    public void searchAeIds(IRequestCycle cycle){
        String[] aeids = this.getSearchAeid().split(" ");
        AdminSession adminSession = AdminSession.getAdminSession( this.getHttpServletRequest().getSession());
        if(aeids.length==0){
            return;
        }
        ArrayList aastrategys = new ArrayList();
        for (String aeid : aeids) {
       
            try {
                UserLogin ul = new UserLogin();
                ul.setAeid(aeid);
                AdminUserLogin aa = new AdminUserLogin();
                aa.setUserLogin(ul);
                aastrategys.add(aa);
            } catch (RuntimeException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        UserLoginSelectModels ulModel = new UserLoginSelectModels(aastrategys);
        this.setUserLoginSelections(ulModel);
        adminSession.set_TL_Low_Value("ulModel", ulModel);
       
        cycle.getResponseBuilder().updateComponent("aeidSelect");

       
    }
   
    @EventListener(targets="padAccount",events="")
    public void searchAccounts(IRequestCycle cycle){
        String[] aeids = this.getSearchAccount().split(" ");
       
        AdminSession session =AdminSession.getAdminSession( this.getHttpServletRequest().getSession());
        if(aeids.length==0){
            return;
        }
        ArrayList aastrategys = new ArrayList();
        for (String aeid : aeids) {
           
            AccountStrategy ul = new AccountStrategy();
            try {
                ul.setAccount(Long.parseLong(aeid));
                AdminAccountStrategy aa = new AdminAccountStrategy();
                aa.setAccountStrategy(ul);
                aastrategys.add(aa);
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               
            }
           
        }
        AccountStrategySelectionModels ulModel = new AccountStrategySelectionModels(aastrategys);
        session.set_TL_Low_Value("asModel", ulModel);
        this.setAccountStragetySelections(ulModel);
        cycle.getResponseBuilder().updateComponent("accountSelect");
    }
   
    @EventListener(targets="aeidSelect",events="onchange")
    public void searchAccountByAeId (IRequestCycle cycle){
        AdminUserLogin choseLogin = this.getUserLogin();
        if("".equals(choseLogin.getShowAeId())){
            return;
        }
        AdminSession session =AdminSession.getAdminSession( this.getHttpServletRequest().getSession());
        System.out.println(choseLogin.getUserLogin().getAeid());
        ArrayList aastrategys = new ArrayList();
        for (int i=50; i>0;i--) {
            AccountStrategy ul = new AccountStrategy();
            ul.setAccount(new Long(i));
            AdminAccountStrategy aa = new AdminAccountStrategy();
            aa.setAccountStrategy(ul);
            aastrategys.add(aa);
        }
        AccountStrategySelectionModels ulModel = new AccountStrategySelectionModels(aastrategys);
        session.set_TL_Low_Value("asModel", ulModel);
        this.setAccountStragetySelections(ulModel);
        cycle.getResponseBuilder().updateComponent("accountSelect");
        this.setHasUserMsg("display:block");
        cycle.getResponseBuilder().updateComponent("noUlMsg");
    }
   
    @EventListener(targets="accountSelect",events="onchange")
    public void searchAccountById(IRequestCycle cycle){
//        System.out.println(this.getAccountStragety());
        AdminSession session =AdminSession.getAdminSession( this.getHttpServletRequest().getSession());
        session.set_TL_Low_Value("showAccount", this.getAccountStragety());
        this.setShowAccount(this.getAccountStragety());
        cycle.getResponseBuilder().updateComponent("saccount");
        cycle.getResponseBuilder().updateComponent("sgroup");
        cycle.getResponseBuilder().updateComponent("sib");
        cycle.getResponseBuilder().updateComponent("sacName");
        cycle.getResponseBuilder().updateComponent("sTradeable");
        cycle.getResponseBuilder().updateComponent("sdisTradeable");
        cycle.getResponseBuilder().updateComponent("sNOPL");
        cycle.getResponseBuilder().updateComponent("sbc");
        cycle.getResponseBuilder().updateComponent("srealTime");
        cycle.getResponseBuilder().updateComponent("sdaily");
        cycle.getResponseBuilder().updateComponent("sweekly");
        cycle.getResponseBuilder().updateComponent("smonthly");
        cycle.getResponseBuilder().updateComponent("snever");
    }
   
}

你可能感兴趣的:(Tapestry)