struts2 怎样在action内获得fielderror

如:@Namespace("/")@Results({@Result(name="input",location="geterr.action",type="redire... 如:
@Namespace("/")
@Results({@Result(name = "input", location = "geterr.action", type = "redirect")})
public class FuAction extends ActionSupport{

@Override
public String execute() throws Exception{}

@Action("geterr")
public String dosomething() throws Exception
{
//请在这里实现获取的fielderror,谢谢
}

}
ValueStack vs=(ValueStack) ServletActionContext.getRequest().getAttribute("struts.valueStack");
ValueStack vs2=ServletActionContext.getValueStack(ServletActionContext.getRequest());
System.out.println("vs1 (ValueStack) ServletActionContext.getRequest().getAttribute(struts.valueStack)-(String) vs.findValue(fieldErrors):\n"+vs.findValue("fieldErrors").toString());
System.out.println("vs2 ServletActionContext.getValueStack(ServletActionContext.getRequest()):\n"+vs2.findValue("fieldErrors").toString());
/* ActionSupport getFieldErrors()类型为 Map<String, List<String>> */
for (Map.Entry<String, List<String>> entry : getFieldErrors().entrySet()) {
System.out.println("getFieldErrors()"+"key:" + entry.getKey() + " value:" + entry.getValue());
}
展开
 我来答
dxr528
推荐于2016-09-15 · 超过28用户采纳过TA的回答
知道小有建树答主
回答量:48
采纳率:0%
帮助的人:68万
展开全部
struts2是通过值栈来传输数据的 所以你只要在Action中去获取值栈就好了。
ValueStack vc = ActionContext.getContext().getValueStack();
Map<String, String[]> ferrors = (Map<String,String[]>) vc.findValue("fieldErrors");
for (Map.Entry<String, String[]> entry : ferrors.entrySet())
System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());

注意:fielderror下一个名称对应的值是数组形式的 所以要用map<String ,String[]>
可以叫我表哥
推荐于2016-01-03 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464978
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
  参考代码如下:
  final Map errors = internalGetFieldErrors();
  List thisFieldErrors = (List) errors.get(fieldName);

  if (thisFieldErrors == null) {
  thisFieldErrors = new ArrayList();
  errors.put(fieldName, thisFieldErrors);
  在实际的项目开发应用中如果同时用到field和action错误级别的时候,在jsp页面中的表单有用到struts2的标签来实现的话,就有可能对于同一个表单,既有filed级别error提示又有action级别的error提示,这时,可以根据项目的实际需要来取舍,但是如果两个都要同时存在的时候,只显示action级别的error,而不显示field级别的action,由于struts2标签默认就是显示field级别的error,所以要修改模板,加入theme="simple"即可,这时struts2表单那标签默认的显示field错误提示失效,使用这个模板的好处还可以和普通的html一样随便设计版面。例如:<s:form action="RegisterAction"theme="simple" >。
  PS:要显示action级别的错误提示,需要在jsp页面中的表单里面加入<s:actionerror/>。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式