<param name="aliases"></param>拦截器的参数

本文介绍如何在Struts框架中利用xWork拦截器为参数设置别名,实现同一参数在不同Action中以不同名称共享,以及如何在Action类中正确使用别名并避免冲突。
 

这个拦截器在xwork的jar包里,它的作用是给参数起一个别名,可用于在action链中以不同的名字共享同一个参数,也可用于把http请求参数以不同的名字映射到action里。

拦截器有一个参数:aliasesKey,可通过在struts.xml中定义该拦截器时指定其值,默认值是aliases,表示一个别名的map。

下面以实现在action链中以不同的名字共享同一个参数为例:

struts.xml
<package name="test" namespace="/test">  
    <action name="aliasTestFrom" class="test.AliasInterceptorTestFromAction">  
        <result type="chain">aliasTestTo</result>  
    </action>  
           
    <action name="aliasTestTo" class="test.AliasInterceptorTestToAction">  
        <param name="aliases">#{'someList' : 'otherList'}</param>  
        <result>/test/alias_result.jsp</result>  
    </action>  
</package>  
param标签的name属性值应该和拦截器参数aliasesKey的值一样,这样拦截器才知道你是否指定了action的别名map。这个map应该象#{原参数名1 : 别名1, 原参数名2 : 别名2}这样的形式,这是一个定义map的OGNL表达式。

该拦截器已经包含在defaultStack中,因此上面没有显示的指定。

相应的,在本例中,test.AliasInterceptorTestFromAction里有一个字段someList:

AliasInterceptorTestFromAction.java
private List someList;   
       
public List getSomeList() {   
    return someList;   
}   
  
public void setSomeList(List someList) {   
    this.someList = someList;   
}  
test.AliasInterceptorTestToAction里有一个字段otherList:

AliasInterceptorTestToAction.java
private List otherList;   
       
public List getOtherList() {   
    return otherList;   
}   
  
public void setOtherList(List otherList) {   
    this.otherList = otherList;   
}  
注意:在AliasInterceptorTestToAction中不能有一个叫someList的字段,如果有的话,otherList最终的值将是AliasInterceptorTestToAction中的someList,而非AliasInterceptorTestFromAction的值。因为该拦截器的实现是在action的值栈里找到原参数名后设置给别名,如果两个action都有someList,而AliasInterceptorTestToAction位于栈顶,它的someList将被赋给otherList,这并不是我们所期望的结果。

很重要:注意::!!!!!someList也可以来自于http请求参数,因为拦截器如果在action的值栈里没有找到someList,还会在http请求参数里找。

<think> 我们正在讨论的是如何在代码中使用XML注释标签。用户询问的是<summary>、<param>等标签的快捷使用方法。 根据引用内容,XML注释在.NET中用于生成文档,可以通过工具提取生成帮助文档。用户关心的是在编写代码时如何快捷地添加这些注释。 在Visual Studio中,有几种快捷方式可以快速生成XML注释: 1. 输入三个斜杠(`///`):在方法、类或属性的上一行输入三个斜杠,VS会自动生成对应的XML注释模板。例如,在方法上方输入`///`,会自动生成如下结构: ```csharp /// <summary> /// /// </summary> /// <param name="param1"></param> /// <param name="param2"></param> /// <returns></returns> ``` 然后可以快速填充内容。 2. 使用代码片段:VS内置了一些代码片段,例如输入`summary`然后按Tab键两次,会生成一个`<summary>`标签。 3. 安装扩展工具:如ReSharper等,提供更强大的注释生成功能。 4. 参数自动补全:当在`<param>`标签中开始输入参数名时,VS会提供当前方法参数的智能提示。 具体步骤: - 将光标定位到要添加注释的方法、类或属性上方。 - 输入三个斜杠(`///`),VS会自动生成模板。 - 使用Tab键在模板中的不同部分跳转,快速填写内容。 例如,对于一个方法: ```csharp public int Add(int a, int b) { return a + b; } ``` 在方法上方输入`///`后,会自动生成: ```csharp /// <summary> /// /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> ``` 然后填充内容: ```csharp /// <summary> /// 计算两个整数的和 /// </summary> /// <param name="a">第一个加数</param> /// <param name="b">第二个加数</param> /// <returns>两个整数的和</returns> ``` 这样就能快速完成注释。 此外,对于已有的方法,如果还没有注释,也可以将光标放在方法名上,按快捷键(通常是Ctrl+Shift+D)或在右键菜单中选择“生成文档注释”来添加模板(不同VS版本可能略有不同)。 注意:这些快捷方式在Visual Studio中默认支持,其他IDE如Rider、VS Code等可能需要安装相应插件或配置。 综上所述,最常用的快捷方式就是输入三个斜杠(`///`)来自动生成模板。 </think> 在代码中使用 XML 注释标签(如 `<summary>`、`param>`)的快捷方法主要通过以下方式实现: ### 一、Visual Studio 原生快捷方式 1. **三斜杠自动生成** 在方法/类上方输入 `///`,VS 会自动生成 XML 注释模板: ```csharp public int Calculate(int a, int b) { return a + b; } ``` ↑ 在方法名上方输入 `///` 后自动生成 ↓ ```csharp /// <summary> /// /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> ``` 2. **参数智能补全** 编辑 `<param>` 标签时,输入 `name=` 后: - 按 `Ctrl+J` 触发参数列表 - 或输入 `"` 后自动显示可用参数名 ### 二、高效编辑技巧 1. **代码片段快捷键** - 输入 `summary` → 按 `Tab` 两次 → 生成完整摘要标签 - 输入 `param` → 按 `Tab` → 生成带 `name` 属性的参数标签 2. **批量生成文档** 在项目属性中启用: ```xml <PropertyGroup> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> ``` 编译时自动生成 XML 文档文件(引用[4]) ### 三、增强工具推荐 1. **ReSharper 插件** - 按 `Ctrl+Shift+D` 自动生成所有参数标签 - 新增参数时自动更新 `<param>` 标签 2. **VS Code 扩展** 安装 `C# XML Documentation Comments` 扩展: - 右键点击方法 → 选择 `Generate Documentation` - 自动填充继承的注释 ### 四、规范建议 1. **参数注释原则** ```csharp /// <param name="maxRetries"> /// 最大重试次数(值范围 1-10) /// </param> ``` 需包含参数约束和单位说明(引用[3]) 2. **跨文件链接** 使用 `<see cref="OtherClass.Method()"/>` 创建类/方法超链接: ```csharp /// <see cref="Logger.LogError"/> 处理异常记录 ``` 生成的 CHM 文档中可点击跳转(引用[4]) > **最佳实践**:结合 [DocFX](https://dotnet.github.io/docfx/) 或 [Sandcastle](https://github.com/EWSoftware/SHFB) 工具可将 XML 注释自动转换为 CHM/HTML 文档(引用[2][4]),实现代码与文档的同步更新。 --- ### 相关问题 1. 如何在 ASP.NET Core 项目中配置 XML 文档自动发布? 2. XML 注释中的 `<inheritdoc>` 标签如何实现注释继承? 3. 如何为泛型方法编写规范的 XML 注释? 4. 哪些工具可以检查 XML 注释与代码参数的同步性?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值