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());
} 展开
@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());
} 展开
2个回答
展开全部
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[]>
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 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数: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/>。
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/>。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询