在资源配置文件中配置了如下: 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". 请帮忙解答,非常感谢
<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". 请帮忙解答,非常感谢
解决方案 »
- 连接mysql的问题
- java开发经验1-2年
- Struts+Spring+Hibernate问题,帮忙一下,谢拉
- JConnect 6.0 连接Sybase数据库,查询结果中文乱码
- jdk中本地代码在哪里?
- 本科计算机系毕业生要作毕业设计,请高手指点做什么课题?
- 新手请教 Tomcat 5.5.4(exe)安装,QQ:68336016,怎么也用不了
- struts 中 HashTable如何解西
- 请问struts-config.xml怎样配置?
- weblogic servlet question
- 如何选定文件夹 并 得到路径!!!
- 请问:警告: Error setting expression ''
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>
楼主首先看一下你的properties文件中有没有,这个key值,注意如果key值对应的是中文汉字,应该转换成ASCII码。
如果有这个key值的话,你看看你的Action中是否设置了这个key值
例子:
this.addFieldError("username", getText("user.required", "error"));
这个是采用继承ActionSupport的方法,而我想用的是使用Struts 2的校验框架,增加一个校验配置文件,校验配置文件通过使用Struts 2已有的校验器,完成对表单域的校验。不过还是要谢谢你
或者 <s:property value="%{getText('user.required',{getArg0()})}" />这里借用了 OGNL 表达式, 直接调用了 ValueStack 中最后一个对象;(使用 <s:debug/> 查看),
具体可以查看 TextProvider 的 JavaDoc
<message key="user.required" >是在配置文件中的,而<s:property value="getText('user.required','arg0')" />是在jsp页面中的。我想在配置文件中为
user.required={0} is required 传递参数
dtd文件:
<!ELEMENT message (#PCDATA)>
<!ATTLIST message
key CDATA #IMPLIED
>
看不出什么地方可以放message的参数。知道的说一声
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会把参数传递到对应的资源文件中。
非常感谢你的回答!不过我还是想知道怎么传递参数进入。
假如,在资源配置文件中配置了如下:
required={0} is required 这里只是required,
我想传入参数,可以传入参数user或者password 那么就可以变成
user is required 或者 password is required
那么在资源配置文件中就只是写required={0} is required就够了
而不用为每一个都写
user.required = user is required
password.required = passwoord is required
Action中属性name1和name2,并有get/set方法。2>.校验文件:
<field name="name1">
<field-validator type="requiredstring">
<message key="ssi001.required"></message>
</field-validator>
</field>
<field name="name2">
<field-validator type="requiredstring">
<message key="ssi001.required"></message>
</field-validator>
</field>3>.资源文件:
name1 = 参数名称1:
name2 = 参数名称2:
ssi001.required = ${getText(fieldName)}必须输入!
可以参照以下 redlotus_lyn 的方法
1、使用OGNL表达式:
password.length=Password Length Must Between {0} and {1}!
<field name="password">
<field-validator type="stringlength">
<param name="minLength">2</param>
<param name="maxLength">6</param>
<message><![CDATA[${getText("password.length",{"%{minLength}", "%{maxLength}"})}]]></message>
</field-validator>
</field>2、在资源文件中指明参数名:
password.length=Password Length Must Between {0} and {1}!
<field name="password">
<field-validator type="stringlength">
<param name="minLength">2</param>
<param name="maxLength">6</param>
<message key="password.length"/>
</field-validator>
</field>
1、使用OGNL表达式:
password.length=Password Length Must Between {0} and {1}!
<field name="password">
<field-validator type="stringlength">
<param name="minLength">2</param>
<param name="maxLength">6</param>
<message><![CDATA[${getText("password.length",{"%{minLength}", "%{maxLength}"})}]]></message>
</field-validator>
</field>2、在资源文件中指明参数名:
password.length=Password Length Must Between ${minLength} and ${maxLength}!
<field name="password">
<field-validator type="stringlength">
<param name="minLength">2</param>
<param name="maxLength">6</param>
<message key="password.length"/>
</field-validator>
</field>