读书人

struts2.0 验证框架中message的替换有

发布时间: 2012-04-17 15:06:33 作者: rapoo

struts2.0 验证框架中message的替换问题
在资源配置文件中配置了如下:

user.required={0} is required





使用struts2的验证框架配置文件



<field name="name">

<!-- 该表单域必须填写 -->

<field-validator type="requiredstring">

<!-- 如果校验失败,显示user.required对应的信息 -->


<message key="user.required" >
</message>



</field-validator>

</field>

请问一下如何在 <message key="user.required" > </message>中为user.required={0} is required传递参数?

试着添加 <message key="user.required" arg0="123"> </message>又提示Attribute "arg0" must be declared for element type "message".

请帮忙解答,非常感谢


[解决办法]
是不是没有添加在错误集合里面 例子如下:
1:
写在actionfrom 里面的前端验证
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request)
{
ActionErrors errors=new ActionErrors();
if(name==null ||"".equals(name))
{
ActionMessage message=new ActionMessage("intput.count.null","name");
errors.add("name",message);
}
if(name.length() <=6 ||name.length()>=10)
{
ActionMessage message=new ActionMessage("input.count.length","6","10");
errors.add("name",message);
}
if(null==password||"".equals(password))
{
ActionMessage message=new ActionMessage("input.password","password");
errors.add("password",message);
}
return errors;
}
2: 在action 里面的逻辑验证
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String name=loginForm.getName();
if("luoluoluo".equals(name))
{
ActionMessages messages=new ActionMessages();
ActionMessage actionMessage=new ActionMessage("input.jingzhi",name);
messages.add("qingzhi", actionMessage);
this.saveErrors(request, messages); //保存在errors集合里面
return mapping.getInputForward();
}
return null;
}
3: 在jsp页面显示
<html:form action="login">
<!--arg0 表示输入参数 bundle 表示指定的资源文件 -->
<bean:message key="into.input" arg0="name"/>
<html:text property="name" />
<html:errors property="name" bundle="warn"/> <br/>

<bean:message key="into.input" arg0="pass" />
<html:password property="password"/>
<html:errors property="password" bundle="warn"/>
<html:errors property="qingzhi" bundle="warn"/> <br/>

<html:submit/>
<html:cancel/>
</html:form>
[解决办法]

探讨


google了一下,貌似是这样的,LZ可以考虑一下。struts2的配置文件验证方式(xml)只能对一些简单的画面属性进行验证(诸如 必须项,输入范围等)。因此,像你所说的user.required={0} is required就只能把message写死了(既然是user.required,当然message是user is required了)。如果是验证范围的话,下面的可以参考一下:
  XML:
    <field name="age">
      <field-validator type="int">
        <param name="min">1 </param>
        <param name="max">100 </param>
        <message key="error.age.size"> </message>
      </field-validator>
    </field>
  Properties:
    error.age.size=年龄只能在${min}~${max}之间

也就是说验证xml会把参数传递到对应的资源文件中。



读书人网 >J2EE开发

热点推荐