addActionMessage(),addActionError(),hasFieldErrors()方法是ActionSupport类中的方法,作用在于后天添加信息之后前台可以通过特定的方式获取到,现在我们就特此讲一下addActionMessage()方法,这个方法可以作为提示框,一般用在插入,删除,更新的操作中,下面我老模拟实现一下功能来看看他的效果:
1.首先需要在继承了actionSupport类中的某个方法中使用addActionMessage()
如根据id删除数据,删除成功跳到另外一个查询action方法,查询数据再返回前台。
步骤1:
/**
* 根据id删除对应周期性事件
* @throws UnsupportedEncodingException
*/
public String deletePeriodicEventById() throws UnsupportedEncodingException{
if(eventManageService.deletePeriodicEventById(periodicEvent.getId())){
actionMsg="删除成功!";
actionMsg=java.net.URLEncoder.encode(actionMsg,"utf-8");
return "deleteSuccess";
}
actionMsg="数据异常,删除失败!";
actionMsg=java.net.URLEncoder.encode(actionMsg,"utf-8");
return "deleteError";
}
步骤2:配置文件进入查询action方法
<result name="deleteSuccess" type="redirectAction">
<param name="actionName">loadAllPeriodicEvent</param>
<param name="namespace">/periodicevent</param>
<param name="actionMsg">${actionMsg}</param>
</result>
步骤3:使用addActionMessage(String msg)方法
/**
* 查询所有周期性事件
* @return
* @throws UnsupportedEncodingException
*/
public String loadAllPeriodicEvent() throws UnsupportedEncodingException{
if(actionMsg!=null){
actionMsg=java.net.URLDecoder.decode(actionMsg,"utf-8");
addActionMessage(actionMsg);
}
pageBean = eventManageService.loadAllPeriodicEvent(page,PAGE_SIZE);
setPageBean(pageBean);
return "loadAllPeriodicEvent";
}
步骤4:返回前台
<action name="loadAllPeriodicEvent" class="periodicEventAction" method="loadAllPeriodicEvent">
<result name="loadAllPeriodicEvent">
<param name="location">/admin/periodicevent_ck.jsp</param>
</result>
<interceptor-ref name="myStack"/>
</action>
步骤5:前台取出提示
<s:if test="hasFieldErrors()">
<e:msgdialog basepath="<%=basePath%>">
<s:fielderror />
</e:msgdialog>
</s:if>
<s:if test="hasActionErrors()">
<e:msgdialog basepath="<%=basePath%>">
<s:actionerror />
</e:msgdialog>
</s:if>
<s:if test="hasActionMessages()">
<e:msgdialog basepath="<%=basePath%>">
<s:actionmessage />
</e:msgdialog>
</s:if>
显示还可以使用其他方法:比如alert();通过其他方式获取也是可以的。或者把<e:msgdialog>直接用alert代替都是可以的。这没有谁好谁坏。就看个人习惯。一起进步吧。有什么不对的地方忘指出。其他两个方法也是同理,这个如果自己需要就自己研究吧。