struts2中拦截器defaultStack的使用

ogiso_pest 2011-10-22 08:41:37
前台如下图

如果我在sector中做了选择,则onchange="loadDivisions(),然后使用ajax通信,告诉action当前sector的选项,而action则根据sector的选项值,返回相应的division值。
我在js里的回调函数,写了测试语句;alert("here");alert("Receive:"+data)
但是并没有执行alert,请问是怎么回事啊?是拦截器的问题么?
在action里,我也简单写了测试
this.getResponse().getWriter().print("Action say");
谢谢啦~

loadDivisions()内容如下:
function loadDivisions() {
var selectedValue;
var options = document.getElementById("sectorId").options;
for ( var i = 0; i < options.length; i++) {
if (options[i].selected == true)
selectedValue = options[i].value;
}

if (selectedValue=="100") {
document.getElementById("companyId").options.length = 0;
}else{
var params = {
"parentSectorId" : selectedValue
};
var url = "getSubDivision";
document.getElementById("divisionId").options.length = 0;
alert("selectedValue:"+selectedValue);
$.getJSON(url, params, function callback(data) {

alert("here");
alert("Receive:"+data);
option = document.createElement('option');
option.text= "";
option.value = 100;
document.getElementById("divisionId").add(option, 0);

for ( var i = 0; i < data.length; i++) {
option = document.createElement("option");
option.text = data[i].name;
option.value = data[i].id;
alert("optione:"+option.text+"_"+option.value);
var divPosition = document.getElementById("divisionId").options.length;
document.getElementById("divisionId").add(option, divPosition);
}
});
}
}


如果做了一个非空选择,则根据当前选择,改变Division的选项。
在struts.xml里getSubDivision配置如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />

<package name="default" namespace="/" extends="struts-default">

<action name="toReport" class="action.ReportAction"
method="toReport">
<result name="success">/report.jsp</result>
</action>
<action name="getSubDivision" class="action.ReportAction"
method="getSubDivision">
<interceptor-ref name="defaultStack" />
</action>
</package>

</struts>


而ReportAction如下

package action;

import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionSupport;
import dao.DB;
import model.Organization;

public class ReportAction extends ActionSupport implements ServletResponseAware{

private List<Organization> sectors;
private List<Organization> divisions;
private String parentSectorId;
private HttpServletResponse response;

public String toReport() {

sectors = DB.getAllSectors();
System.out.println("secots:"+sectors);
return SUCCESS;
}

public String getSubDivision() {

if (parentSectorId == "") {
return null;
}

int secId = Integer.parseInt(parentSectorId);
divisions = DB.getDivisionsBySecId(secId);
System.out.println("SectorId "+ secId +"'s divisions:");
String str = "";
for(Organization div: divisions) {
str += div.getId()+":"+div.getName();
}
try {
this.getResponse().getWriter().print("Action say");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ERROR;
}
return null;
}

public List<Organization> getSectors() {
return sectors;
}

public void setSectors(List<Organization> sectors) {
this.sectors = sectors;
}

public List<Organization> getDivisions() {
return divisions;
}

public void setDivisions(List<Organization> divisions) {
this.divisions = divisions;
}

public String getParentSectorId() {
return parentSectorId;
}

public void setParentSectorId(String parentSectorId) {
this.parentSectorId = parentSectorId;
}

public HttpServletResponse getResponse() {
return response;
}

@Override
public void setServletResponse(HttpServletResponse response) {
// TODO Auto-generated method stub
this.response = response;
}


}
...全文
226 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ogiso_pest 2011-10-23
  • 打赏
  • 举报
回复
谁能解决啊~
很着急啊!
拦截器和过滤器的区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求后各调一次。 4、拦截器可以利用依赖注入,因此在spring框架程序,优先拦截器 5、拦截器是包裹在过滤器使用的。 复习 converter 转换器 i18n struts2 spring MVC 拦截器 interceptor 过滤器 filter web.xml implements filter filterchain arg2.doFilter(req,resp); 监听器 servlet application /session /request 6/8 个 1、拦截器 定义拦截器的包 定义拦截器的核心 定义拦截器 定义拦截器的值栈空间 stack name="myStack"> stack> 引入定义的拦截器 <default-interceptor-ref name="myStack">default-interceptor-ref> 拦截错误跳转的页面 /demo01/error.jsp 2、 token /demo02/error.jsp <%@ taglib uri="/struts-tags" prefix="s" %> 3、500字struts2的科学说明文 每人一份 2018-03-19 下午演讲(脱稿) 4、小结 1、struts2对servlet封装(request,response) ,资源调配和资源的映射 2、框架设计的思想 istruts 配置,过滤器,反射 istruts.properties 3、starts2的使用思路 1、jar 2、配置文件 3、常用类 servletActionContext 4、访问流程 url -> filter -> struts.xml -> package -> action -> name="userAction_*" -> class -> method="{1}" 5、核心struts.xml 6、提交策略 图片预览 个人信息完善 7、crud 增删改查 搜索 多删 假删 ids ->action -> dao PreparedStatement -- "delete from user where id in ("+ids+")"; 8、converter i18n ModeDriven stack 9、interceptor token 5、hibernate 4.1.4 搭建架构 ORM --- Object relational Mapping UserBean userBean.hbm.xml db table let java objects hibernate in the relational datebase ! persistent Class

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧