我有一个Struts2表单,它包含在页面上的DIV覆盖中。当我提交此表单时,我希望它隐藏/显示表单底部的隐藏文本区域,只是让用户知道表单已提交。用户可以从那里关闭叠加层并返回其工作。我遇到了一个问题。在我返回SUCCESS
或NONE
页面后,如果我在回复中没有提供其他页面,则该页面将重定向到空白页面。如何在不重定向的情况下提交表单并保持在同一页面内?
目前我正在使用JavaScript提交表单
document.forms['formName'].submit();
我使用JavaScript而不是<s:submit/>
选项,因为在表单提交之前需要在表单上设置其他参数。
答案 0 :(得分:3)
您需要的是:AJAX。
在Struts2中,您可以使用<sx:div>
(自Struts 2.1以来已弃用,但仍在此处工作)Struts2-Dojo Plugin即可实现开箱即用。
基本上,您使用dojo主题来定位div,而Action的结果(包含HTML / JSP片段的JSP文件)将填充div而不重新加载页面。
但是如果您使用的是Struts2的最新版本,则可以使用Struts2-jQuery Plugin轻松实现此目的,并且您可以在its Showcase中找到代码的所有工作示例。
这是一个例子:
<s:url id="ajax" value="/ajax1.action"/>
<sj:div href="%{ajax}" indicator="indicator">
<img id="indicator" src="images/indicator.gif"
alt="Loading..." style="display:none"/>
</sj:div>
非常简单:)
如果你需要在运行时设置参数,你显然可以用href
更改javascript
属性...只需按id和alter href
属性获取id。
答案 1 :(得分:0)
您需要使用 Ajax调用 。 请看下面的例子,
Struts.xml配置:
<action name="**ActionName**" class="**Actionclass**" method="**Method-calling**">
<result type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
<result name="input">/Error.jsp</result>
</action>
</package>
操作类 公共类 ActionClass 扩展了ActionSupport { private InputStream inputStream;
public String **Method-calling()**
{
//Calling Business Logic
if(Business logic check condition)
{
inputStream=new StringBufferInputStream("return x");
}
else
{
inputStream=new StringBufferInputStream("return y");
}
return SUCCESS;
}
public InputStream getInputStream()
{
return inputStream;
}
public String execute()
{
return SUCCESS;
}
}
Html文件 Ajax调用示例
jQuery('***#replace-with-tag-id***').on('***blur(can be any action)***', function() {
var varE = jQuery('***#replace-with-tag-id***').val();
jQuery.ajax({
method:"GET",
url: "***Actoin-name-struts.xml***.action", //"callAJax.action",
data: "email="+varEmail,
success: function(data)
{
if(""+data == "return x")
{
alert("x has been returned");
}
else
{
alert("y has been returned");
}
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('Error=' + textStatus);
alert("errorThrown"+errorThrown);
alert("response text = "+XMLHttpRequest.responseText);
}
});
}
}).trigger('blur');
我希望,我已经清除了你的怀疑。