我正在使用struts2开发一个应用程序。我在JSP页面中有一个按钮,它在单击时执行一个动作方法。我想执行此操作方法但不刷新页面。有什么办法可以实现吗?动作的作用是设置一个整数的值,我只需要在页面上显示它。
我的方法:
public void setVariable(){
//Code to get a random integer
return "SUCCESS";
}
表单的jsp页面代码:
<form method="post" action="setVariable">
<input type="submit" value="Submit" />
</form>
答案 0 :(得分:0)
如果我正确理解你。
在你的struts.xml
中<action name="yourAction" class="ActionClass" >
<result name="success" type="httpheader" >
<param name="status">202</param>
</result>
</action>
将您的Action response
改为httpheader
,这将反映没有页面刷新,即响应将来到同一个JSP页面,您可以使用{打印您在Action class
中设置的变量该变量的{1}}。
在JSP中处理基于结果的代码
as
setter
我不太清楚JSP中Ajax代码的语法。试着这样做。
答案 1 :(得分:0)
为什么不尝试使用Ajax?您可以执行操作,操作数据然后在JSP中获得结果吗?
在JSP中:
function javascript_function(inputIfAny)
{
$.getJSON("<s:property value='%{ajaxCallUrl}' />",
{ value: value},
function(data)
{
dataAttributeValue = data.valueToSendToJSP; // If needed
});
}
<s:url id="ajaxCallUrl" action="actionName" method="ajaxMethod" />
在你的Struts 2行动中:
public void ajaxAccountUpdateHandle()
{
Map<String, Object> params = ActionContext.getContext().getParameters();
String value = params.get("numAcn");
try
{
JsonFactory f = new JsonFactory();
JsonGenerator generator = f.createJsonGenerator(response.getOutputStream());
// Do stuff
generator.writeStartObject();
generator.writeStringField("valueToSendToJSP", "foo");
generator.writeEndObject();
generator.flush();
generator.close();
}
catch (JsonGenerationException e)
{
}
catch (IOException e)
{
}
}
这样,您甚至不需要struts XML中的条目。