在调试页面时,如若发现传值传不进来

本文分享了在页面调试过程中遇到的传值问题解决方法,重点检查inputname的值与controller中POJO或包装类的一致性,以及get和set方法的命名规范,避免因命名相似导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在调试页面时,如若发现传值传不进来,则查看页面input name的值和controller的pojo或者包装类是否类型名是否一致,另外检查包装中的get和set方法的方法名与其他的方法名是否相似,如若是需要修改一下...

(因为本人比较懒,且这些都是很久之前总结的,都是直接复制过来,故没有任何多余的描述,如有任何需要讨论不懂或高见的,就评论见。)

### 回答问题 如果数据集名称规则(例如,数据集名称是简单的序列如 `stock1` 到 `stock30`,而是随机的或具有复杂模式的名称,如 `AAPL_prices`, `GOOG_returns`, `MSFT_data` 等),我们可以通过以下方法处理: 1. **将所有数据集名称存储在一个列表中**: - 使用 `proc datasets` 获取工作库中的所有数据集名称。 - 将这些名称存储到一个宏变量列表中。 2. **遍历宏变量列表**: - 使用 `%do` 或 `%do_over` 宏循环遍历每个数据集名称,并对每个数据集执行相同的计算逻辑。 以下是实现代码: --- ### 示例代码 ```sas /* 获取当前库中所有数据集名称 */ proc datasets lib=work nolist; contents data=_all_; quit; /* 将所有数据集名称存储到一个宏变量列表中 */ %let ds_list = ; proc sql noprint; select memname into :ds_list separated by ' ' from dictionary.members where libname = 'WORK' and memname ne 'DATASETS'; quit; /* 打印数据集名称列表以确认 */ %put Data sets to process: &ds_list; /* 宏程序:处理每个数据集并计算统计量 */ %macro process_datasets; /* 创建汇总数据集 */ data summary; set _null_; keep stock_id quarter_return month_log_return_mean month_log_return_var; run; /* 遍历每个数据集 */ %let i = 1; %let ds_name = %scan(&ds_list, &i); %do %while(%length(&ds_name) > 0); /* 当前数据集名 */ %put Processing dataset: &ds_name; /* 读取当前数据集 */ data current_stock; set &ds_name; format log_return quarter_return best12.; run; /* 计算月对数收益率 */ data current_stock; set current_stock; by date; /* 假设日期字段为 date */ if first.date then prev_price = price; /* 假设价格字段为 price */ log_return = log(price / prev_price); prev_price = price; /* 更新上一月的价格 */ run; /* 计算季度收益率 */ data current_stock; set current_stock; by date; retain quarter_start_price; if mod(month(date), 3) = 1 then quarter_start_price = price; /* 每季度初记录价格 */ if mod(month(date), 3) = 0 then quarter_return = (price - quarter_start_price) / quarter_start_price; run; /* 计算月平均收益率和方差 */ proc means data=current_stock mean var noprint; var log_return; output out=stats mean=month_log_return_mean var=month_log_return_var; run; /* 将结果添加到汇总数据集中 */ data temp_summary; length stock_id $32; stock_id = "&ds_name"; set stats (keep=month_log_return_mean month_log_return_var); quarter_return = .; /* 初始化季度收益率 */ run; /* 合并季度收益率 */ proc sql; update temp_summary set quarter_return = (select distinct quarter_return from current_stock where quarter_return ne .); quit; /* 追加到汇总数据集 */ proc append base=summary data=temp_summary; run; /* 获取下一个数据集名称 */ %let i = %eval(&i + 1); %let ds_name = %scan(&ds_list, &i); %end; %mend process_datasets; /* 调用宏程序 */ %process_datasets; /* 查看汇总结果 */ proc print data=summary; run; ``` --- ### 给出解释 1. **获取数据集名称**: - 使用 `proc datasets` 和 `dictionary.members` 获取当前库中所有数据集的名称。 - 将这些名称存储到一个宏变量列表 `&ds_list` 中。 2. **遍历数据集名称**: - 使用 `%scan` 函数从宏变量列表中逐个提取数据集名称。 - 使用 `%do %while` 循环遍历每个数据集名称。 3. **处理每个数据集**: - 对每个数据集执行相同的逻辑,包括计算月对数收益率、季度收益率、月平均收益率和方差。 - 将结果追加到汇总数据集 `summary` 中。 4. **结果输出**: - 最终使用 `proc print` 查看汇总结果。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值