如何在同一页面上获得结果为什么需要输入?

在我的项目中,我正在更新详细信息,因此我创建了操作,但它在响应中给出了exception

No result defined for action org.employee.actions.EmployeeMyProfileAction and result input 

struts.xml (之前)

  empMyProfile.jsp  

(后)

  empMyProfile.jsp emp-personal-form.jsp  

Ajax Call

 function checkPersonal(id) { if (checkEverythingP()) { $.ajax({ type : 'POST', url : 'savePersonalDetails', data : $('#personalform').serialize(), success : function(data) { alert('success'); }, error : function() { alert('error'); } }); } } 

它给了我在JQuery中的成功消息,但它没有去声明的动作类。 一切都是正确的,我不明白为什么会发生这种情况。 我为此提到了很多网站,但没有解决。 请告诉我出了什么问题。

并非一切都是正确的,因为在success回调函数中,您已收到INPUT结果。 此结果由workflow拦截器返回,该拦截器位于defaultStack – 如果您的操作未覆盖拦截器配置,则默认使用拦截器堆栈。 它检查操作调用是否具有诸如操作错误或字段错误(转换错误)之类的validation错误,然后返回由参数inputResultName指定的结果。 默认情况下,此参数设置为“input”。 如果拦截器返回一个结果,它会打断一系列拦截器并调用action方法。 你注意到它说它不会去声明的动作类

解决方案是覆盖动作的拦截器配置以使用基本堆栈,即没有validation和/或workflow拦截器。

   empMyProfile.jsp  

如果仍需要执行validation,则可以以编程方式执行或配置workflow拦截器以过滤操作方法。 只有在你有足够理由这样做时才应该使用的最后一个选项,因为它克服了拦截器本身的目的。

假设您知道INPUT结果是什么以及它是如何工作的 ,那么您在这里做错了。

当您执行AJAX调用时,1)结果将在您当前页面中被解析(然后最终注入),或者,您可以使用该结果通过使用javascript( window.location = "newUrl";执行重定向) window.location = "newUrl"; )。

你不能返回整个页面,然后使用该响应来创建一个新页面(除非在iframe或类似的内部,但那是DOM /页面操作,然后是案例1)。

然后这个

  empMyProfile.jsp emp-personal-form.jsp  

不可能是正确的,因为结果应该是整个页面(在经典POST的情况下)或JSP片段/ JSON /任何(在AJAX CALL的情况下)。

你应该把它改成类似的东西

  emp-personal-form.jsp emp-personal-form.jsp emp-personal-form.jsp  

并在emp-personal-form.jsp的第一行中包含一条带有错误的消息(如果是INPUT或ERROR结果),或者包含成功消息(如果是SUCCESS结果),然后提供一个导航离开的链接这一页。

否则 ,使用标准POST并在INPUT或ERROR的情况下返回相同的页面,或者在成功的情况下返回成功页面:

  profileCorrectlyUpdated.jsp empMyProfile.jsp empMyProfile.jsp  

但是在SUCCESS的情况下,没有什么能阻止你使用标准的POST并返回同一页面。

注意:要知道如何仅在需要时显示(成功或错误)消息, 请阅读此内容 。