200分悬赏:用struts2在action里面获取不到前台select控件的值

<!-- 页面的select -->
<select name="streetId">
<c:forEach items="${requestScope.street}" var="street"> <option value="${street.id }">${street.name }</option>
</c:forEach>
</select>
//获取select的value
ActionContext ac = ActionContext.getContext();
Map<String, Object> request = (Map<String, Object>)ac.get("request");
String streetId = request.get("streetId");
结果是null,为什么为什么?EL绝对没问题

第1个回答  2011-08-04
第一:你可以把streetId定义为Action成员变量即
public class Action extends ActionSupport{
private String streetId;
public String getStreetId(){
return streetId;
}
public void setStreetId(String streetId){
this.streetId=streetId;
}
}
第二种 你通过获取request对象 再通过getParameter("streetId");获得
获得request对象 可以:
通过ServletActionContext类来获取
Action中代码:
HttpServletRequest request = ServletActionContext.getRequest();
String streetId=request.getParameter("streetId");
--------------------------------------------------------------------------------------------
通过ServletRequestAware接口通过IOC机制注入Request对象
Action中的代码:
Action实现ServletRequestAware接口,实现接口中的方法
private HttpServletRequest request;
//实现接口中的方法
public void setServletRequest(HttpServletRequest request){
this.request = request;
}
//然后在execute()方法中就可以使用了
public String execute(){
String streetId=request.getParameter("streetId");

}
第2个回答  2011-08-04
在一个JSP页面 已经有了一个2维数组,有两个Select

2维数组存放的都是地区,而每行的第一个即a[][0]存放的是省

我想让第一个select选择一个省 之后,让第二个select 显示该省的地区

这个该如何实现?

我这个页面没有使用脚本,目前就是只用《% %》 二维数组也是放到这个里面的。
第3个回答  2011-08-04
用属性封装吧本回答被提问者采纳
第4个回答  2011-08-04
1