turbine 一个action对应多个方法

本文介绍了Turbine框架如何处理Web页面提交的数据,重点解释了通过特定命名规则实现不同按钮对应不同Action方法的机制,并提供了示例代码。

Turbine 有一个非常好的功能来帮助开发人员处理web耶面的提交数据.为了理解这一功能,你需要知道Turbine是如何处理一次提交的.
  事实上,当在一个URI中只要发现有action这个变量出现,在执行所有Screen类之前会执行一个程序,我们来看下面这个例子(来自VelocitySite的Howto示例):
  
   对于URL"http: //www.server.com/servlet/Turbine/template/AddUser/action /NewUser",Turbine 会首先执行一个名叫"NewUse"的Action类,在这种情况下,所有继续ActionEvent而不是Action的类都可以象如下的代码一样方便 的处理:
  
  public class NewUser extends VelocityAction
  {
  public void doAdd (RunData data, Context context) throws Exception
  {
  // put code here to add the user to the system
  context.put ("username", username );
  data.setMessage("User Added!");
  }
  
  public void doPerform(RunData data, Context context) throws Exception
  {
  data.setMessage("Button not found!");
  }
  }
  
  然后,在Html中这样写:
  
  <input type="submit" name="eventSubmit_doAdd" value="Add User">
  
  当Action执行的时候,将会收到一个"事件"来执行Action类中的"doAdd()"方法.这样处理最"酷"的就是你的每一种"action(操作,注:比如点击一个提交按钮等)"都可以对应到Action类中一个特定的方法.
  
  这个新的功能并不意味着你应该把所有的操作都写到一个类里,而是假设有一个页面里面有一些和这个页面关西很紧密的操作,这时最好是把这些操作都写到同一个类里.这样可以帮助你方便的判定并处理具体哪个按钮给点击了,而不是用一些"if-else"来.
  
  假如判定不出哪个按钮被点击了(找不到一个合适的方法执行),将会执行doPerform()方法.
  
   因为ParameterParser把所有的"key"都变成了小写,我们必须将提交的数据里得到一个合适的方法名,比如:一个按钮名叫 eventSubmit_doDelete,提交的时候就变成了eventsubmit_dodelete,因此,我们需要通过一些命名规范来得到真正的 方法名,转换的规则是:
  * 变量名(如:提交按钮)必需以"eventSubmit_"开头
  * 变量名在这个前缀后必需是"do"
  * 在"do"之后的第一个字母必须是大写并且其他都是小写
  只要你遵循这些命名规范,在Action类中就能找到相应的方法来执行.
  
   (注:以上规则适合turbine2.1及以前的版本,在turbine2.2及以后的版本中 eventSubmit_doMySaveMethod也是一个合法的名子,因为在2.2以后的版本里,Parameterparser不会把"key" 都变成小写,这一点在取得提交数据的时候也要注重的)
  
  在TurbineResources.properties里有一个属性, 名叫"action.eventsubmit.needsvalue". 假如把这个属性设置成"true",那只有值不为空,并且不为0的事件才会被执行,这在一个FORM有多个不同的事件(或者说提交按钮),并且由客户端的 代码(比如javascript)提交的时候比较有用.

同步定位与地图构建(SLAM)技术为移动机器人或自主载具在未知空间中的导航提供了核心支撑。借助该技术,机器人能够在探索过程中实时构建环境地图并确定自身位置。典型的SLAM流程涵盖传感器数据采集、数据处理、状态估计及地图生成等环节,其核心挑战在于有效处理定位与环境建模中的各类不确定性。 Matlab作为工程计算与数据可视化领域广泛应用的数学软件,具备丰富的内置函数与专用工具箱,尤其适用于算法开发与仿真验证。在SLAM研究方面,Matlab可用于模拟传感器输出、实现定位建图算法,并进行系统性能评估。其仿真环境能显著降低实验成本,加速算法开发与验证周期。 本次“SLAM-基于Matlab的同步定位与建图仿真实践项目”通过Matlab平台完整再现了SLAM的关键流程,包括数据采集、滤波估计、特征提取、数据关联与地图更新等核心模块。该项目不仅呈现了SLAM技术的实际应用场景,更为机器人导航与自主移动领域的研究人员提供了系统的实践参考。 项目涉及的核心技术要点主要包括:传感器模型(如激光雷达与视觉传感器)的建立与应用、特征匹配与数据关联方法、滤波器设计(如扩展卡尔曼滤波与粒子滤波)、图优化框架(如GTSAM与Ceres Solver)以及路径规划与避障策略。通过项目实践,参与者可深入掌握SLAM算法的实现原理,并提升相关算法的设计与调试能力。 该项目同时注重理论向工程实践的转化,为机器人技术领域的学习者提供了宝贵的实操经验。Matlab仿真环境将复杂的技术问题可视化与可操作化,显著降低了学习门槛,提升了学习效率与质量。 实践过程中,学习者将直面SLAM技术在实际应用中遇到的典型问题,包括传感器误差补偿、动态环境下的建图定位挑战以及计算资源优化等。这些问题的解决对推动SLAM技术的产业化应用具有重要价值。 SLAM技术在工业自动化、服务机器人、自动驾驶及无人机等领域的应用前景广阔。掌握该项技术不仅有助于提升个人专业能力,也为相关行业的技术发展提供了重要支撑。随着技术进步与应用场景的持续拓展,SLAM技术的重要性将日益凸显。 本实践项目作为综合性学习资源,为机器人技术领域的专业人员提供了深入研习SLAM技术的实践平台。通过Matlab这一高效工具,参与者能够直观理解SLAM的实现过程,掌握关键算法,并将理论知识系统应用于实际工程问题的解决之中。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
在MATLAB/Simulink中,`Wind Turbine`模型通常包含在**Simscape Electrical**(或旧版中的**SimPowerSystems**)和**Simulink**的附加模块库中,具体取决于版本和安装的模块包。以下是详细说明: ### 1. **Simscape Electrical 模块库** - **位置**: 在MATLAB的Simulink库浏览器中,`Wind Turbine`模型通常位于以下路径: **Simscape > Electrical > Specialized Power Systems > Renewable Energy > Wind Turbine** (旧版可能显示为`SimPowerSystems > Renewable Energy > Wind Turbine`)。 - **功能**: 该模型包含风力发电机的机械和电气特性,支持模拟风速-功率转换、变桨控制、发电机动态等。 ### 2. **Simulink 内置示例或自定义模型** - 如果未安装Simscape Electrical,可能需通过以下方式获取: - **MATLAB示例库**: 运行`power_windturbine`命令(旧版)或搜索`Wind Turbine`示例(新版可能集成在`Simscape Electrical`示例中)。 - **自定义模型**: 用户可基于`Generic Wind Turbine`模块(需手动配置参数)或组合`Wind Speed`、`Pitch Controller`、`Generator`等子模块搭建。 ### 3. **版本差异** - **R2018b及以后版本**: `SimPowerSystems`更名为`Simscape Electrical`,模块路径可能调整。 - **学生版或基础版MATLAB**: 可能需单独安装`Simscape Electrical`附加模块(通过MATLAB的“附加功能管理器”安装)。 ### 4. **验证安装** - 在MATLAB命令行输入以下命令检查模块是否存在: ```matlab which WindTurbine % 检查模型路径 ver('simscape') % 检查Simscape是否安装 ``` ### 5. **替代方案** - 若无`Wind Turbine`模型,可通过以下方式模拟: - 使用`Controlled Voltage Source`或`Current Source`结合风速-功率曲线手动建模。 - 下载MATLAB File Exchange中的第三方风力发电机模型(如`Wind Turbine Blockset`)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值