Javascript 页面刷新时未调用Struts2操作

Javascript 页面刷新时未调用Struts2操作,javascript,jquery,ajax,struts2,Javascript,Jquery,Ajax,Struts2,我正在为一个学校项目制作一个CRUD应用程序,其中有一个“课程组”列表,可以添加或删除 我有一个引导模式,看起来像这样,您可以输入一个课程组名称并按下按钮提交它: 勒斯格罗普托沃根酒店 &时代; 纳姆 斯鲁伊特 托沃根 该按钮通过JavaScript AJAX post请求工作,如下所示: public String execute() { if (lessonGroups == null) { lessonGroups = new TreeSet<>()

我正在为一个学校项目制作一个CRUD应用程序,其中有一个“课程组”列表,可以添加或删除

我有一个引导模式,看起来像这样,您可以输入一个课程组名称并按下按钮提交它:


勒斯格罗普托沃根酒店
&时代;
纳姆
斯鲁伊特
托沃根
该按钮通过JavaScript AJAX post请求工作,如下所示:

public String execute() {
    if (lessonGroups == null) {
        lessonGroups = new TreeSet<>();
    }
    lessonGroups.clear();
    lessonGroups.addAll(TestDAOLessonGroup.getInstance().getLessongroups());
    return SUCCESS;
}
$(“#addLessonGroupButton”)。在(“单击”,函数(){
if($(($input[type=text]#lessonGroupName input”).val(){
$.ajax({
键入:“POST”,
url:'lessongroup/add.action',
数据类型:“json”,
数据:“lessonGroupName=“+$”(输入[type=text]#lessonGroupName输入”).val(),
});
}
location.reload();
});
我用于此的操作方法如下所示:

public String execute() {
    if (lessonGroups == null) {
        lessonGroups = new TreeSet<>();
    }
    lessonGroups.clear();
    lessonGroups.addAll(TestDAOLessonGroup.getInstance().getLessongroups());
    return SUCCESS;
}
公共字符串addLessonGroup(){
if(this.lessonGroupName==null | | this.lessonGroupName.equals(“”){
返回误差;
}
LessonGroup previousLessonGroup=this.getLessonGroups().last();
TestDAOLessonGroup.getInstance().create(新的LessonGroup(previousLessonGroup.getId()+1,lessonGroupName));
System.out.println(“添加了名为“+lessonGroupName”的课程组);
回归成功;
}
TestDAOLessonGroup
是一个保存该对象的单例,我100%确定该对象只生成一次

控制器的执行方法如下所示:

public String execute() {
    if (lessonGroups == null) {
        lessonGroups = new TreeSet<>();
    }
    lessonGroups.clear();
    lessonGroups.addAll(TestDAOLessonGroup.getInstance().getLessongroups());
    return SUCCESS;
}
我百分之百确信这个映射是有效的,并且正在视图中加载经验教训

问题是,当您通过post请求向DAO添加新的课程组时,它会通过
location.reload()重新加载页面语句,它不会在第一次调用该操作。当我添加另一个课程组时,效果很好


如何使操作在第一页刷新时被调用?我是否为此使用了正确的方法?

url未映射到操作。你应该加上

<action name="add" class="employeemanagement.LessonGroupListingAction"
        method="add">
  <result type="json"/>
</action> 

url未映射到操作。你应该加上

<action name="add" class="employeemanagement.LessonGroupListingAction"
        method="add">
  <result type="json"/>
</action> 

首先,如果发送了post请求,则应该将location.reload()作为post请求的回调调用,因为Ajax调用是异步的。@geo我该怎么做?我真的不明白,我不想动态地替换htmlIf,如果您在这里检查是否有complete,这是一个在请求完成时调用的函数(在执行成功和错误回调之后)。我不知道这是否是问题所在,但当post请求存在时,您的实现是错误的。另外,请先看一下这里,如果发送了post请求,则应该将location.reload()作为post请求的回调调用,因为Ajax调用是异步的。@geo我该怎么做?我真的不明白,我不想动态地替换htmlIf,如果您在这里检查是否有complete,这是一个在请求完成时调用的函数(在执行成功和错误回调之后)。我不知道这是否是问题所在,但当post请求存在时,您的实现是错误的。另外,看看这里是否需要将映射放入
struts.xml
文件中的另一个包中?url是相对于当前包/命名空间的,如果需要另一个包,则需要更改url。我建议使用
s:url
标记,但您使用的是硬编码的url,所以这取决于您。还要注意,如果您接受答案,您应该对其进行投票。是否需要将映射放入
struts.xml
文件中的另一个包中?url相对于当前包/命名空间,如果您需要另一个包,则需要更改url。我建议使用
s:url
标记,但您使用的是硬编码的url,所以这取决于您。还要注意,如果你接受答案,你应该投票表决。