在一个添加页面 有一个下拉列表 当别的项有空值时 验证后还是反回到添加页面 此时就会报错
tag 'select', field 'list', name 'daily.project.projectId': The requested list key 'projectList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
可能是验证从新返回到此页面时,下拉列表的LIST空了 这个问题应该怎么解决呢 XML文件:
<action name="dailyAdd" class="dailyAction" method="add">
<result name="success" type="redirect">dailylist.action</result>
<result name="input">/jsp/daily/daily_add.jsp</result>
</action>
JSP页面的下拉列表:<tr height=25>
<td bgcolor=#B1CDF2 align=center>
项目名称:
</td>
<td>
<s:select name="daily.project.projectId" cssClass="text Wdate" list="projectList" listKey="project.projectId" listValue="project.name" headerValue="--请选择--" headerKey=""/>
</td>
</tr>
tag 'select', field 'list', name 'daily.project.projectId': The requested list key 'projectList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
可能是验证从新返回到此页面时,下拉列表的LIST空了 这个问题应该怎么解决呢 XML文件:
<action name="dailyAdd" class="dailyAction" method="add">
<result name="success" type="redirect">dailylist.action</result>
<result name="input">/jsp/daily/daily_add.jsp</result>
</action>
JSP页面的下拉列表:<tr height=25>
<td bgcolor=#B1CDF2 align=center>
项目名称:
</td>
<td>
<s:select name="daily.project.projectId" cssClass="text Wdate" list="projectList" listKey="project.projectId" listValue="project.name" headerValue="--请选择--" headerKey=""/>
</td>
</tr>
这点我怎么就没有想到呢。但是用这个方法的前提是LZ用的难策略是不XML,而是重写action中的validator()方法才可以
/**
* 逻辑验证-添加
*/
public void validateAdd() {
try {
if (daily.getProject().getProjectId() == null) {
this.addFieldError("daily.project.projectId", "请选择项目名称");
}
} catch (Exception e) {
this.addFieldError("user.name", "数据库连接错误,验证失败");
}
}
try{
nowDate = strCurDate;
projectList = projectService.findUserProject(session.get("pubUser").getUserId());
return SUCCESS;
} catch (Exception e) {
this.addActionError("操作错误,"+e.toString());
return ERROR;
}
这里获得PROJECTLIST
toAdd是跳转到 添加页面的 下面的是添加:
public String add() throws Exception {
try {
daily.setUserId(session.get("pubUser").getUserId());
daily.setDailyDate(nowDate);
service.save(daily);
return SUCCESS;
} catch (Exception e) {
this.addActionError("操作错误,"+e.toString());
return ERROR;
}
}
配置action的跳转好像就搞错了, <result type="redirect-action">dailylist</result>
另外,你这里是为哪一个action配置的?toAdd()方法?
nowDate = strCurDate;
projectList = projectService.findUserProject(session.get("pubUser").getUserId());
return SUCCESS;
你在这里查询出projectList来以后是如果让页面获取projectList的值的?怎么直接return了
<result name="success">/jsp/daily/daily_add.jsp</result>
</action>
<action name="dailyAdd" class="dailyAction" method="add">
<result name="success" type="redirect">dailylist.action</result>
<result name="input">/jsp/daily/daily_add.jsp</result>
</action>
toAdd是跳转到添加页面的 ADD是添加的在toAdd里面获得的projectList 然后跳到添加页面 这样添加页面的列表不是才能显示出列表内容么
try{
nowDate = strCurDate;
projectList = projectService.findUserProject(session.get("pubUser").getUserId());
ActionContext.getContext().getSession().put("projectList",projectList);
return SUCCESS;
} catch (Exception e) {
this.addActionError("操作错误,"+e.toString());
return ERROR;
}