求助大家一下。我用Struts2在处理数据时候,对于不符合标准的数据都是用了警告信息,例如:
addActionError("密码错误!您还有"+(systemConfig.getLoginFailureLockCount()-loginMember.getFailNum())+"次机会!");
现在有个情况。此前取这个信息都是是用<s:actionMessage />来获取的。现在需要用jstl获取,但是不知道这个内容被添加到session还是request中?对应的key也不确定。不知道是否有高人能够指点一下?
我的想法是写成<%=request.getAttrbute("actionMessage")%>这种形式

解决方案 »

  1.   

    <s:actionMessage/>就是jstl呀,只不过是struts2自带的jstl
      

  2.   

    request.getAttrbute是你在程序中用request.setAttrbute的值,struts2可以直接输出错误
      

  3.   

    actionErrors会放在栈顶,是个集合,你迭代出来就可以了
      

  4.   

    可能说的不明白。事实上,因为后台采用的ajax交互方案,在Validations中验证失败的信息无法以ajax方式发送(或许可以?只是我不知道?)。所以我在预定义的error.jsp中准备输出ajax信息。此时需要讲错误信息读出。那样的话就是纯java代码操作。所以在最后写了一个期望是<%=request.getAttrbute("actionMessage")%>这样的一种写法。这样我可以将错误信息赋值给某一个变量,然后ajax输出该变量。
      

  5.   

    1.建立配置文件MyResource.property,例如放在com.gsww.property下.在此配置文件中设定所需要的对应值,如:
       # Resources for parameter 'com.yourcompany.struts.ApplicationResources'
       # Project P/xioahu
       user.name=<b>userName {0} {1} is not valid user,please input again.</b>
       login.false=<b>userName or password is not right</b>   
    2.在struts-config.xml中配置如下:
       <message-resources parameter="com.gsww.property.MyResource" />
    3.应用如下:
       ActionErrors errors = new ActionErrors();
       ActionError error = new ActionError("login.false");
       errors.add("loginFalse",error);
       saveErrors(request,errors):
    4.JSP页面中输出错误信息
       <html:errors property="loginFalse"/>
      

  6.   

    你的action继承了ActionSupport是么?要是的话,你只管调用addActionError方法添加信息。然后你在配置文件中配置actionErrors属性返回,然后前台解析返回的json数据就可以了
      

  7.   


    请问怎么配置actionErrors属性返回呢?
      

  8.   

    我对struts2不是怎么了解,所以对"在Validations中验证"这种验证方式具体是什么不是很清楚,你是重写ActionSupport的validate方法验证的么?
      

  9.   

    不是。我用的annotation写的。
    @Validations(
    requiredStrings = { 
    @RequiredStringValidator(fieldName = "member.username", message = "用户名不允许为空!"),
    @RequiredStringValidator(fieldName = "member.password", message = "密码不允许为空!")
    }
    )
    @InputConfig(resultName = "error")
      

  10.   

    我试了试,我是这样做的:
    1、
    <action name="ajaxAction" class="com.struts2.action.AjaxAction">
    <result type="json">
    <!--
    <param name="root">password,name,data,actionErrors</param>
    -->
    </result>
    <result name="input">/error.jsp</result>
    </action>
    2、
    @Validations(requiredStrings = { @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "name", message = "角色名称不能为空") })
    public String retrieveJsonString(){
    return SUCCESS;
    }
    3、两个jsp,一个是请求jsp页面,点击个div发送ajax请求
    $("#click").click(function(){
    $.ajax({
    url:'${pageContext.request.contextPath}/ajax/ajaxAction!retrieveJsonString.action',
    type:"post",
    //如果dataType写成json则,直接返回json对象
    dataType:"text",
    data:{name:'',password:'密码'},
    success:function(data){
    $("#show").html(data);
    }
    });

    });
    <div id="click">click here</div>
    <div id="show">div</div>
    另一个是input逻辑视图对应的页面,如下:
    <%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/WEB-INF/tlds/struts-tags.tld" %>
    <s:fielderror/>
    你可以试试。
      

  11.   

    很明显是request、页面上直接EL都能取到值