Struts框架JSP中s:select值传至Action获取为null问题求助
问题原因排查与解决方案
核心问题:JavaBean getter/setter 命名不符合规范
Struts2的参数注入依赖OGNL表达式,严格遵循JavaBean命名规范:属性名首字母小写时,对应的get/set方法需要将属性名首字母大写。
你当前Action中urgency属性的get/set方法命名错误:
// 错误写法:方法名中urgency首字母未大写 public String geturgency() { return urgency; } public void seturgency(String urgency) { this.urgency = urgency; }
修正为符合规范的写法即可解决参数注入问题:
// 正确写法 public String getUrgency() { return urgency; } public void setUrgency(String urgency) { this.urgency = urgency; }
其他可排查项(修改命名后仍未生效时验证)
- 确认
UrgencyList集合的初始化逻辑:确保JSP渲染下拉框时,生成的option的value值正常,无空值情况 - 验证前端参数是否正常提交:在
Save方法最开头加入日志打印所有请求参数,确认前端是否携带了urgency参数:
ActionContext actionContext = ActionContext.getContext(); Map<?,?> data=actionContext.getParameters(); // 打印验证参数传递情况 Log.info(getClass(), "请求参数集合:" + data.keySet()); Log.info(getClass(), "urgency参数值:" + data.get("urgency"));
如果日志能正常打印urgency的参数值,就完全确认是setter命名规范问题导致的注入失败。
内容的提问来源于stack exchange,提问作者Kim Ivan Bay-an
相关产品推荐
相关产品推荐

